Skip to content

Instantly share code, notes, and snippets.

Embed
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']])
@GinaZhai

This comment has been minimized.

Copy link

@GinaZhai GinaZhai commented May 22, 2018

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

@TheDavidJohnson

This comment has been minimized.

Copy link

@TheDavidJohnson 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!

@davidpelayo

This comment has been minimized.

Copy link
Owner Author

@davidpelayo 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?

@janewongktj

This comment has been minimized.

Copy link

@janewongktj janewongktj commented May 4, 2020

Hi David,

I'm a newbie at running python scripts.

Following the steps on this blog https://kamal.io/blog/exporting-email-threads-from-gmail-into-csv-file
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