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']])

This comment has been minimized.

Copy link

@GinaZhai GinaZhai commented May 22, 2018

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


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!


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?


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
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
You can’t perform that action at this time.