【问题标题】:python email.parser: extract header from emailpython email.parser:从电子邮件中提取标题
【发布时间】:2013-01-24 06:54:01
【问题描述】:
import sys, imaplib
    from email.parser import HeaderParser

mail = imaplib.IMAP4_SSL(SERVER, PORT)
status, data = mail.search(None, 'ALL')

for msg_id in data[0].split():
  status, message = mail.fetch(msg_id, '(RFC822)')
  print message[0][1]

mail.close()
mail.logout()

我正在尝试通过 imap 从 gmail 获取电子邮件。一切正常,除了我无法从邮件中提取标题(主题、发件人、日期)。在上面的代码中,message[0][1] 包含我的电子邮件。

我能够获得标头的唯一方法是再次询问 imap 服务器,特别是标头:

status, message = mail.fetch(msg_id, '(BODY[HEADER.FIELDS (SUBJECT FROM)])')
parser = HeaderParser()
header = parser.parsestr(message[0][1])
print header

有人能告诉我怎么做吗?

【问题讨论】:

    标签: python


    【解决方案1】:

    我假设您已经收到了完整的电子邮件,而不仅仅是邮件正文。

    raw_message = """From: Santa Claus <santa@aintreal.no>
    To: Some Dude <some@du.de>
    Subject: I have lost your presents.
    
    Dude, i am so sorry.
    """
    
    import email
    msg = email.message_from_string(raw_message)
    print(msg['Subject'])  # "I have lost your presents."
    

    msg 是一个email.message.Message 对象。

    【讨论】:

    • 这正是我想要的。非常感谢
    猜你喜欢
    • 2016-01-10
    • 1970-01-01
    • 1970-01-01
    • 2018-05-22
    • 2012-01-15
    • 1970-01-01
    • 2010-11-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多