Files
OutlookManager/README.md
2025-02-26 15:17:18 +01:00

123 lines
4.2 KiB
Markdown

# 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:
```sh
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:
```sh
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!