aboutsummaryrefslogtreecommitdiffstats
path: root/archivemail.py
diff options
context:
space:
mode:
authorNikolaus Schulz <microschulz@web.de>2007-11-13 21:13:38 +0000
committerNikolaus Schulz <microschulz@web.de>2007-11-13 21:13:38 +0000
commit8e5c8700572d74629eb9edb1090a83c0d316d633 (patch)
tree98a3973c769ef0a763ef519ff0d754b0aacc9eb8 /archivemail.py
parent4584dffe14705d8e47a04dfbfd2fcf1d997123e8 (diff)
downloadarchivemail-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-xarchivemail.py14
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):