如何使用uid打印单个电子邮件的主题

时间:2017-01-08 21:30:25

标签: python python-2.7 email imap

我希望使用python 2.7 imap库打印我已经拥有UID的单个电子邮件的主题。它非常简单,我是Python的新手,我在使用该库时遇到了麻烦。

以下是我所拥有的:

# Retrieve and store ID & UID for most recent email received

result, data = mail.search(None,'ALL') # search and return sequential ids
latest_id = data[0].split()[-1]

result, data = mail.uid('search', None, "ALL") # search and return uids instead
latest_uid = data[0].split()[-1]

现在我只想打印latest_uid标识的电子邮件的主题。

感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

我接触主题的方法是使用RFC 822(电子邮件标准格式)获取整个邮件数据,然后使用电子邮件模块将其转换为python电子邮件对象。

使用RFC 822将获取整个邮件,但如果您只需要主题,则只需获取标题(下面已注释掉)。如果您决定只获取标题,只需解析以Subject:开头的行。

imaplib文档https://pymotw.com/2/imaplib/更深入地了解了以下代码中发生的事情。

import email, imaplib

# typ, msg_data = c.fetch('1', '(BODY.PEEK[HEADER])') 
t, d = mail.fetch(latest_uid, '(RFC822)')


for res_part in d:
    if isinstance(res_part, tuple):
    msg = email.message_from_string(res_part[1])
    subject = msg['subject']