diff options
author | Nikolaus Schulz <microschulz@web.de> | 2007-11-13 21:13:38 +0000 |
---|---|---|
committer | Nikolaus Schulz <microschulz@web.de> | 2007-11-13 21:13:38 +0000 |
commit | 8e5c8700572d74629eb9edb1090a83c0d316d633 (patch) | |
tree | 98a3973c769ef0a763ef519ff0d754b0aacc9eb8 /archivemail.py | |
parent | 4584dffe14705d8e47a04dfbfd2fcf1d997123e8 (diff) | |
download | archivemail-8e5c8700572d74629eb9edb1090a83c0d316d633.tar.gz archivemail-8e5c8700572d74629eb9edb1090a83c0d316d633.tar.bz2 archivemail-8e5c8700572d74629eb9edb1090a83c0d316d633.zip |
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.
Diffstat (limited to 'archivemail.py')
-rwxr-xr-x | archivemail.py | 14 |
1 files changed, 10 insertions, 4 deletions
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): |