gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 04:54:32 25 4
gpt4 key购买 nike

我使用 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('email@gmail.com', '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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com