【问题标题】:Reading Gmail messages using Python IMAP使用 Python IMAP 阅读 Gmail 邮件
【发布时间】:2019-05-24 02:12:10
【问题描述】:

虽然我在从很多网站搜索了很多内容后完成了大部分工作,但我仍然无法获得我想要的正确输出。

代码:

import imaplib

import smtplib

import email

mail=imaplib.IMAP4_SSL("imap.gmail.com")

mail.login("**************@gmail.com","********")

mail.select('inbox')

type,data=mail.search(None,'ALL')

mail_ids=data[0]

id_list=mail_ids.split()

for i in range(int(id_list[-1]),int(id_list[0])-1,-1):

    typ,data=mail.fetch(i,'(RFC822)') 
        for response_part in data :
            if isinstance(response_part,tuple):
                msg=email.message_from_string(response_part[1])
                email_from=msg['from']
                email_subj=msg['subject']
                c=msg.get_payload(0)
                print email_from
                print "subj:",email_subj
                print c

输出:

Bharath Joshi 主题:嘿嘿从没人星期二 2018 年 12 月 25 日 15:48:52 内容类型:文本/纯文本; charset="UTF-8"

你好444444444

Bharath Joshi 主题:来自没人 12 月 25 日星期二 15:48:52 2018 内容类型:文本/纯文本; charset="UTF-8"

33333

Bharath Joshi 主题:来自没人 12 月 25 日星期二 2018 年 15:48:53 内容类型:文本/纯文本; charset="UTF-8"

你好--22

困扰我的是我得到的额外的东西,即

“来自任何人......”和“内容类型......”

我怎样才能删除那些?

【问题讨论】:

    标签: python imap gmail-imap


    【解决方案1】:

    啊,电子邮件的“美”……显然您正面临多部分电子邮件消息,对于这些,get_payload() 方法也输出标题。您需要像这样使用msg.walk():

    for response_part in data :
        if isinstance(response_part,tuple):
            msg=email.message_from_string(response_part[1])
            print "subj:", msg['subject']
            print "from:", msg['from']
            print "body:"
            for part in msg.walk():
                if part.get_content_type() == 'text/plain':
                    print part.get_payload()
    

    如需更完整的答案,请查看this stackoverflow answer

    【讨论】:

    • @BharathJoshi 如果它解决了您的用例,请接受答案,否则请解释仍未回答的问题
    • fetch() 方法似乎同时返回元组(您实际要查找的内容)和字符串,例如)(我不完全理解为什么,here 是关于这个的一些讨论)。如果您不检查 response_part 是否为元组,则在执行 response_part[1] 时会遇到问题,因为当字符串的大小仅为 1 时,您会遇到您发布的字符串索引超出范围问题
    猜你喜欢
    • 1970-01-01
    • 2016-01-12
    • 2012-01-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-21
    相关资源
    最近更新 更多