【发布时间】:2019-12-28 17:06:56
【问题描述】:
目标是让应用程序在 python 3 中运行并读取特定 gmail 帐户上的传入电子邮件,如何监听这些电子邮件的接收?
它应该做的是等到收件箱收到新邮件,从电子邮件中读取主题和正文,然后从正文中获取文本(无格式)。
这是我目前得到的:
import imaplib
import email
import datetime
import time
mail = imaplib.IMAP4_SSL('imap.gmail.com', 993)
mail.login(user, password)
mail.list()
mail.select('inbox')
status, data = mail.search(None, 'ALL')
for num in data[0].split():
status, data = mail.fetch(num, '(RFC822)')
email_msg = data[0][1]
email_msg = email.message_from_bytes(email_msg)
maintype = email_msg.get_content_maintype()
if maintype == 'multipart':
for part in email_msg.get_payload():
if part.get_content_maintype() == 'text':
print(part.get_payload())
elif maintype == 'text':
print(email_msg.get_payload())
但这有几个问题:当消息是多部分时,每个部分都会被打印出来,有时最后一部分基本上是整个消息,但是是 html 格式。
此外,这会打印收件箱中的所有消息,如何使用 imaplib 收听新电子邮件?或与其他图书馆。
【问题讨论】:
标签: python-3.x email