Skip to content

Instantly share code, notes, and snippets.

What would you like to do?
Simple mbox parser to csv in Python
import mailbox
import csv
writer = csv.writer(open("mbox-output.csv", "wb"))
for message in mailbox.mbox('file.mbox/mbox'):
writer.writerow([message['message-id'], message['subject'], message['from']])
Copy link

GinaZhai commented May 22, 2018

hi, I want to know the version of your python, Thanks

Copy link

TheDavidJohnson commented Oct 1, 2019

Thanks for posting this!

Quick note about using this with Python 3.6.8 (on Ubuntu 18.04). I got an error trying to write to the .csv file:

TypeError: a bytes-like object is required, not 'str'

By using the w option instead of the wb option, I was able to get it to work properly. Since this is a text file, I think we don't want to open it as binary. Just leaving this here in case it helps someone else.

So the writer = line ended up looking like this for me:

writer = csv.writer(open("mbox-output.csv", "w"))

Thanks again for sharing this snippet!

Copy link

davidpelayo commented Oct 1, 2019

@GinaZhai this was 4 years ago. I can't remember; but I'd bet it was Python 2.x. Does it make sense?

Copy link

janewongktj commented May 4, 2020

Hi David,

I'm a newbie at running python scripts.

Following the steps on this blog
led me here.

I've extracted a mbox file (about 120KB), and have tried to run this script in the same directory using Python 3.8.3rc1 IDLE, but the resulting csv file has 0bytes.

I would appreciate any pointers, I am not sure what went wrong?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment