Source code for mods.mbox
# mods/mbox.py
#
#
""" read email from an mbox directory or file. """
from mads.trace import get_exception
from mads.time import to_date
from mads.object import Object
import logging
import mailbox
import os
[docs]class Email(Object):
pass
[docs]def mbox(event):
if not event._parsed.rest:
event.reply("mbox <path>")
return
fn = os.path.expanduser(event._parsed.args[0])
nr = 0
if os.path.isdir(fn):
thing = mailbox.Maildir(fn, create=False)
elif os.path.isfile(fn):
thing = mailbox.mbox(fn, create=False)
else:
event.reply("need a mbox or maildir.")
return
try:
thing.lock()
except FileNotFoundError:
pass
for m in thing:
try:
o = Email()
o.prefix = "email"
o.update(m.items())
try:
sdate = os.sep.join(to_date(o.Date).split())
except AttributeError:
sdate = None
o.text = ""
for load in m.walk():
if load.get_content_type() == 'text/plain':
o.text += load.get_payload()
o.text = o.text.replace("\\n", "\n")
o._prefix = "email"
o.email = o.From
if sdate:
o.save(stime=sdate)
else:
o.save()
nr += 1
except:
logging.error(get_exception())
if nr:
event.ok(nr)