[英]python imaplib fetch result is none with simple email from gmail
我用Thunderbird或gmail webapp寫的電子郵件的結果是我什么也沒有。
例如,我的主題是“ myfancysubject”,文本只是“ hello”
通過使用imaplib提取操作,我沒有任何數據(無)
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或順序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的郵件可能已被刪除或其他內容。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.