python imaplib 获取结果与来自 gmail 的简单电子邮件无关

标签 python gmail-imap

我使用 Thunderbird 或 gmail webapp 编写的电子邮件没有得到任何结果。

例如,我的主题是“myfancysubject”,文本只是“hello”

通过使用 imaplib 获取操作,我没有得到任何数据(NONE)

 result, data = mail.fetch(latest_email_id, '(RFC822)') # fetch the email body (RFC822) for the given ID

我的假设是邮件没有 RFC822 标签?

但是我怎样才能获得该邮件的内容呢?

这是我的完整代码:

import imaplib
import email

try:
    mail = imaplib.IMAP4_SSL('imap.gmail.com')
    mail.login('<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="4a2f272b23260a2d272b232664292527" rel="noreferrer noopener nofollow">[email protected]</a>', 'password')
    labels = mail.list()
    # Out: list of "folders" aka labels in gmail.
    inbox = mail.select("inbox") # connect to inbox.
    #result, data = mail.search(None, "ALL")
    result, data = mail.uid('search', None, '(HEADER Subject "myfancysubject")')


    ids = data[0] # data is a list.
    id_list = ids.split() # ids is a space separated string

    latest_email_id = None
    if len(id_list) == 1:
        latest_email_id = id_list[0] # get the latest
        pass
    else:
        latest_email_id = id_list[-1]
        pass

    result, data = mail.fetch(latest_email_id, '(RFC822)') # fetch the email body (RFC822) for the given ID

    print(data)

    raw_email = data[0][0]
    email_message = email.message_from_string(raw_email)

    print email_message['To']

    print email.utils.parseaddr(email_message['From'])

    print email_message.items() # print all headers

except Exception:
    print('Ex')

最佳答案

找到解决办法了,使用uid或sequential id时必须保持一致

而不是使用

result, data = mail.fetch(latest_email_id, '(RFC822)')

我必须使用:

result, data = mail.uid('fetch', latest_email_id, '(RFC822)')

与之前一样,您通过 UID 而不是序列 ID 进行搜索。然后您尝试通过序列 ID(默认)获取 RFC822 或邮件正文。

您试图获取序列 id x 而不是 uid x。当某些邮件在两者之间被删除时,这两者会有所不同。

它可能没有给出任何信息,因为带有该se的邮件可能已被删除或其他什么。

关于python imaplib 获取结果与来自 gmail 的简单电子邮件无关,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27743728/

相关文章:

python - 在 numpy 中执行交叉差异

python - 用于开发和模拟的 Lite Python AMQP 服务器实现?

ruby - 在 GMAIL 上使用 IMAP 获取附件的大小

python - 无法使用 imaplib 从 gmail 解析 url

python - 适合数据点的角臂

Python - Ttk Treeview - 隐藏行

python - Pandas - 如何将数据框中的日期范围分割为额外列

ruby-on-rails - Rails Gmail gem : Get correct address of sender and message body

gmail - 骡子 ESB : Retrieving email messages from Gmail using IMAP connector