I'd like to extract the Final Received: email header from a message. I have the Message as returned from email.message_from_file().
Using the Message.get() or Message.get_item() methods don't guarantee which of the many Received: headers I will get. Message.get_all() returns them all, but doesn't guarantee an order. Is there a way to be guaranteed to get the last one?
解决方案
Received: headers are timestamped:
Received: from lb-ex1.int.icgroup.com (localhost [127.0.0.1])
by lb-ex1.localdomain (Postfix) with ESMTP id D6BDB1E26393
for ; Fri, 12 Dec 2014 12:09:24 -0500 (EST)
So, do messageInstance.get_all() and sort the resulting list however you see fit, an example of how to do this:
import email.utils
import operator
def sort_key(received_header):
received_date = email.utils.parsedate_tz(received_header)
return received_date
received_header_list.sort(key=sort_key)
If it doesn't work, do leave a comment and I'll be happy to look into it further.