mirror of
https://github.com/jkocon/OutlookManager.git
synced 2026-02-24 05:14:40 +01:00
d7f4a7848d413e34244fa4b050ad23a77f7999e6
Email Export and Archiving Script Documentation
Overview
This script provides functionality to:
- Export emails from Microsoft Outlook to a CSV file.
- Move old emails (older than 12 months) to an Online Archive within Outlook.
The script is divided into three main components:
main.py: The entry point where the user selects between exporting emails or archiving old emails.export_emails.py: Handles exporting emails to a CSV file.archive_emails.py: Manages moving old emails to an Online Archive.
Prerequisites
Required Python Packages:
pywin32(for interacting with Outlook)
To install the required package, run:
pip install pywin32
Permissions:
- The script must be run with an Outlook profile configured.
- The user must have access to the mailboxes they want to process.
main.py
This script acts as the control panel for selecting different operations:
- Export emails to CSV
- Move old emails to Online Archive
Usage:
Run the script and select the desired option:
python main.py
Example output:
Choose an action:
1. Export emails to CSV
2. Move old emails to Online Archive
Select an option (1 or 2):
export_emails.py
Functionality:
- Lists available Outlook mailboxes.
- Exports email details (subject, date received, size, folder) to a CSV file.
- Processes both main folders and subfolders recursively.
- Displays statistics after export.
Key Functions:
list_outlook_mailboxes(): Lists available Outlook mailboxes.export_outlook_emails(output_file, root_folder_name): Exports emails from a selected folder.process_folder(folder, writer, base_folder, counter, last_log_time): Recursively processes folders and saves email details.print_exported_folder_stats(output_file): Displays statistics about exported emails.
Example Output:
Available mailboxes:
1. user@example.com
2. shared@example.com
Select mailbox number: 1
Export completed. Total emails processed: 1200. File saved as: ./export/user@example.com/2024_06_01_12_30.csv
archive_emails.py
Functionality:
- Lists Outlook mailboxes.
- Identifies corresponding Online Archive for selected mailboxes.
- Moves emails older than 12 months from selected folders (including subfolders) to an Online Archive.
- Provides a dry-run mode to preview how many emails and total size would be moved.
Key Functions:
find_online_archive(mailboxes, selected_mailbox): Finds the corresponding Online Archive for a mailbox.list_main_folders(mailbox_name): Lists main folders for a selected mailbox.process_folder(folder, archive_folder, run_type, depth): Recursively processes a folder and its subfolders, counting or moving emails.main_archive(): The main function that orchestrates mailbox selection and processing.
Example Output:
Available mailboxes:
1. user@example.com
2. shared@example.com
Select mailbox number: 1
Main folders:
1. Inbox
2. Sent Items
3. Archive
Select folders by number (comma-separated, e.g., 1,3,6): 2
Do you want to perform a dry-run or actually move emails? (dry-run/move): dry-run
Processing folder: Sent Items
Folder 'Sent Items': 520 emails (105.4 MB) would be moved.
Dry-run complete. No emails were moved.
Error Handling
Common Issues:
- Missing Online Archive: If the script cannot locate the Online Archive, it exits with an error.
- Folder Access Issues: If a folder cannot be accessed or created, the script logs an error and continues.
- Invalid Selections: If an invalid mailbox or folder is selected, the script prompts the user and exits.
Debugging:
- Enable logging by adding
print()statements in the script. - Run the script in dry-run mode before actual execution.
Future Improvements
- Logging System: Implement a structured logging system instead of
print(). - GUI Version: Create a graphical interface for easier navigation.
- Selective Email Archiving: Allow users to define custom retention periods.
Conclusion
This script automates the process of exporting and archiving emails in Outlook. It provides a simple way to manage large volumes of emails while maintaining efficiency.
For any issues or improvements, feel free to contribute or modify the script!
Description
Languages
Python
100%