diff options
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): |