#!/usr/bin/python import mailbox import datetime import matplotlib.pyplot as plt import matplotlib.dates as mdates import argparse parser = argparse.ArgumentParser() parser.add_argument('mbox', help='Mailbox to analyze.') parser.add_argument('--plotfile', '-p', default=False, action='store', help='Name of output plotting file.') parser.add_argument('--title', '-t', default='Email Send Times', action='store', help='Plot title.') args = parser.parse_args() plt.figure() plt.ylim([0, 24]) plt.ylabel('Hour') plt.xlabel('Date') plt.minorticks_on() plt.title(args.title) a = mailbox.mbox(args.mbox) for msg in a: if msg['date'] is not None: try: z = datetime.datetime.strptime(msg['date'], '%a, %d %b %Y %H:%M:%S %z') except ValueError: try: z = datetime.datetime.strptime(msg['date'], '%a, %d %b %Y %H:%M:%S %Z') except ValueError: print("Skipping message from " + msg['date']) continue plt.plot_date(z.date(), z.hour + z.minute/60., fmt='r.', # tz=z.tzname(), xdate=True) if args.plotfile: plt.savefig(args.plotfile) else: plt.savefig('email_times.png')