簡體   English   中英

python imaplib獲取結果與從gmail發送的簡單電子郵件無關

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM