From 8e5c8700572d74629eb9edb1090a83c0d316d633 Mon Sep 17 00:00:00 2001 From: Nikolaus Schulz Date: Tue, 13 Nov 2007 21:13:38 +0000 Subject: guess_delivery_time(): * look for the timestamp of the latest 'Received' header before resorting to 'Date' or 'Resent-Date'. * let 'Resent-date' header take precedence over 'Date'. Document these changes in manpage and changelog. Closes: #1481316, #1764855, Debian bug #272666. --- archivemail.py | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) (limited to 'archivemail.py') diff --git a/archivemail.py b/archivemail.py index ae4a7a0..a60834d 100755 --- a/archivemail.py +++ b/archivemail.py @@ -777,14 +777,20 @@ def guess_delivery_time(message): assert(message) # try to guess the delivery date from various headers # get more desparate as we go through the array - for header in ('Delivery-date', 'Date', 'Resent-Date'): - try: - date = message.getdate_tz(header) + for header in 'Delivery-date', 'Received', 'Resent-Date', 'Date': + try: + if header == 'Received': + # This should be good enough for almost all headers in the wild; + # if we're guessing wrong, parsedate_tz() will fail graciously. + token = message.getrawheader(header).rsplit(';', 1)[-1] + else: + token = message.get(header) + date = rfc822.parsedate_tz(token) if date: time_message = rfc822.mktime_tz(date) vprint("using valid time found from '%s' header" % header) return time_message - except (IndexError, ValueError, OverflowError): pass + except (AttributeError, IndexError, ValueError, OverflowError): pass # as a second-last resort, try the date from the 'From_' line (ugly) # this will only work from a mbox-format mailbox if (message.unixfrom): -- cgit v1.2.3