mirror of
https://github.com/jkocon/OutlookManager.git
synced 2026-02-24 05:14:40 +01:00
123 lines
4.2 KiB
Markdown
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!
|
|
|