尽管在从许多站点进行了大量搜索之后,我做了大部分工作,但仍然无法获得想要的正确输出。
代码:
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”
hello444444444
巴拉特·乔希(Bharath Joshi)演绎:从没人那里星期二12月25日 15:48:52 2018内容类型:文本/纯文本; charset =“ UTF-8”
33333
巴拉特·乔希(Bharath Joshi)演绎:从没人那里星期二12月25日 15:48:53 2018内容类型:文本/纯文本; charset =“ UTF-8”
hello--22
困扰我的是我得到的额外的东西。
“来自无人……”和“内容类型...”。
我如何将其删除?
答案 0 :(得分:2)
啊,电子邮件的“美丽”……显然,您面对的是多部分电子邮件,对于这些电子邮件,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