/outlook_mail_loader

This library helps to dump letters from outlook to some local folder in human readable format.

Primary LanguagePythonMIT LicenseMIT

outlook_mail_loader

GitHub last commit GitHub license<space><space> Documentation Status pre-commit PyPI PyPI - Python Version

outlook_mail_loader is a python package (py>=3.6) which helps in handling outlook letters

This library helps to dump letters from outlook to some local folder in human readable format.

pip install outlook_mail_loader
If you want to dump all new letters from outlook folder to windows local folder.
Firstly, you should define dumper object from class MailFolderDumper
And then, whenever you want you can call method dump_new(...) to dump the new letters
from outlook_mail_loader import MailFolderDumper

mail_loader_obj = MailFolderDumper(
    str_outlook_folder_name="inbox",
    str_path_dir_where_to_save="mails",
)

# To dump the new letters from the asked outlook folder
mail_loader_obj.dump_new()

After the dump you will get file-folder structure like that:

str_path_dir_where_to_save
--> <str_outlook_folder_name>
----> LETTER_1
----> LETTER_2
----> ...
----> LETTER_N
------> letter.txt
------> dict_metainfo.json
------> ATTACHMENTS
--------> file_1
--------> file_N
# Full signature of the dump_new method
mail_loader_obj.dump_new(
    int_max_last_letters_to_dump=10,
    is_to_mark_messages_as_read=False,
    is_to_remove_attachments=False,
    is_to_preserve_msg_obj=False,
)

Attributes:

  • .str_outlook_folder_name (str): Folder name which to dump
  • .str_path_dir_where_to_save (str): Path where to dump

Methods:

  • .dump_new(...) - Dump new letters to set local directory
  • .print_stats_about_initialized_folders() - Print hierarchy for initialized outlook mail folder
  • .print_full_folders_hierarchy_from_root() - Print full hierarchy from root outlook mail folder
  • .get_list_names_of_all_outlook_folders() - Get list names of all outlook folders available
After the letters are dumped to local folder
You most probably want to do some action with them
Here are some handlers for doing it
from outlook_mail_loader import DumpedMails

dumped_mails_obj = DumpedMails(str_path_dir_with_mails="mails",)

# Get dictionary with last letter
dict_last_letter = dumped_mails_obj.get_last_letter()
print(get_last_letter)

# Get dictionary with last N letter
list_dict_last_5_letter = dumped_mails_obj.get_last_n_letters(5)

# Print statistics about all dumped letters
dumped_mails_obj.print_stats_about_dumped_mails()
  • dict_one_letter["letter"] - Text of the letter
  • dict_one_letter["dict_metainfo"] - All metainfo about the letter
  • dict_one_letter["list_attachments"] - List pathes to files with letter's attachments

Attributes:

  • .str_path_dir_with_mails (str): Path to dir with dumped letters
  • .int_last_dumped_id (str): Id of the last dumped letter

Methods:

  • .get_last_letter() - Get dictionary with last letter
  • .get_last_n_letters(int_last_letters_to_get) - Get list of dicts of last N letters
  • .print_stats_about_dumped_mails() - Print statistics about all dumped letters
  • .clear_dumped_mails() - Clear from cache dumped mails
In case if you want to run some process only once and
then be sure that all new letters are dumped into the local folder
Then you can start mail folder listener
from outlook_mail_loader import listen_outlook_mail_folder

# To dump the new letters from the asked outlook folder
listen_outlook_mail_folder(
    str_outlook_folder_name="inbox",
    str_path_dir_where_to_save="mails",
    int_seconds_step_in_dump=60,
)
from outlook_mail_loader import listen_outlook_mail_folder

# Full signature of the dump_new method
listen_outlook_mail_folder(
    str_outlook_folder_name="inbox",
    str_path_dir_where_to_save="mails",
    int_seconds_step_in_dump=60,
    is_to_mark_messages_as_read=False,
    is_to_remove_attachments=False,
    is_to_preserve_msg_obj=False,
)

Arguments description:

  • str_outlook_folder_name (str, optional): Which outlook folder to listen
  • str_path_dir_where_to_save (str, optional): Path to dir. where to save letters.
  • int_seconds_step_in_dump (int, optional): Seconds to wait between dumping new letters.
  • is_to_mark_messages_as_read (bool, optional): Flag if to mark as read saved letters. Default is False.
  • is_to_remove_attachments (bool, optional): Flag if to remove attachments to save disk space. Default is False.
  • is_to_preserve_msg_obj (bool, optional): Flag if to preserve outlook .msg object. Default is False.

This project is licensed under the MIT License.