有没有人有一个很好的例子,在Python中使用HeaderParser类来获取你用imaplib.fetch下载的消息?
我已经能够找到很多相关的东西,但没有任何东西可以做到这一点.
我是否需要完全取下有一个RFC822?我希望简单地拉下主题.
谢谢!
好消息:你是对的......你不需要拉下RFC822.这个message_parts
参数可以fetch()
让你非常精细.
这是一个如何获取标题的简单示例:
import imaplib from email.parser import HeaderParser conn = imaplib.IMAP4('my.host.com') conn.login('my@username.com', 'mypassword') conn.select() conn.search(None, 'ALL') # returns a nice list of messages... # let's say I pick #1 from this data = conn.fetch(1, '(BODY[HEADER])') # gloss over data structure of return... I assume you know these # gives something like: # ('OK', [(1 (BODY[HEADER] {1662', 'Received: etc....')]) header_data = data[1][0][1] parser = HeaderParser() msg = parser.parsestr(header_data)print msg.keys() ['Received', 'Received', 'Received', 'Cc', 'Message-Id', 'From', 'To', 'In-Reply-To', 'Content-Type', 'Content-Transfer-Encoding', 'Mime-Version', 'Subject', 'Date', 'References', 'X-Mailer', 'X-yoursite-MailScanner-Information', 'X-yoursite-MailScanner', 'X-yoursite-MailScanner-From', 'Return-Path', 'X-OriginalArrivalTime']
可以作为第二个参数传递的消息部分的完整列表fetch
在IMAP4规范中:http://tools.ietf.org/html/rfc1730#section-6.4.5