◈ Mail → Excel

Export Data analyst emails to Excel

By the Mail → Excel team · Updated 2026-10-20

Four steps, one command, and a completeness check at the end — for mailbox metadata for analysis.

Step 1 — connect read-only

Use an app password, never the main password. The script opens the folder in read-only mode, so nothing is marked as read or deleted.

python mail_to_excel.py --host imap.example.com --user you@example.com --days 31 --fields date,sender,subject,thread,attachments --out data-analyst.xlsx

Step 2 — filter to one period

A month or a quarter, not «everything». Email metadata is an underused dataset: response times, senders, topics. A clean export is the first step.

Step 3 — keep only the columns that matter

ColumnWhy it matters
dateMessage date in ISO 8601; sortable and unambiguous across time zones.
senderWho wrote in; used for triage and routing.
subjectMessage subject, MIME-decoded.
threadThread id; the only reliable dedupe key for conversations.
attachmentsNumber of attachments; a cheap filter for «has documents».

Step 4 — verify completeness

  1. Run the same search in your mail client and note the message count.
  2. Compare it with the row count in the spreadsheet.
  3. If the numbers differ, the filter or the folder is wrong — fix it before using the file.

Example output

datesendersubjectthreadattachments
2026-10-14ops@data.ioWeekly export232

Pitfalls

Provider notes

Gmail shows label copies; export one label to avoid counting the same message twice.

Ready-made: the $3 script implements these steps and writes the Excel file with the columns above. Get the script.

FAQ

What format should I use?

CSV with ISO dates and lowercase emails; Excel is for reading, CSV for pipelines.

Can I get message bodies?

Yes, but bodies are heavy and noisy; start with metadata and add bodies only for the analysis you need.

How many messages can it handle?

Thousands per run with a date filter; very large mailboxes are better exported month by month.

Will it change anything in the mailbox?

No. Read-only access is the default and should stay enabled.

Related guides