2025-02-26 15:17:18 +01:00
2025-02-26 15:17:18 +01:00

Email Export and Archiving Script Documentation

Overview

This script provides functionality to:

  1. Export emails from Microsoft Outlook to a CSV file.
  2. 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:

  1. Export emails to CSV
  2. 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
No description provided
Readme 40 KiB
Languages
Python 100%