【发布时间】:2021-11-01 19:39:51
【问题描述】:
我想从 IMAP 邮箱中读取电子邮件,并在每次有新电子邮件进入时提取“From”、“Subject”和“Body”(即 HTML),它应该使未读的电子邮件被读取并最终将电子邮件放入字典。我做了整个事情,除了将未读电子邮件更改为阅读的部分。这对于我使用的“imbox”模块似乎是不可能的。我避免使用 imaplib,因为它看起来非常低级/复杂,我认为应该以更简单的方式完成,当然如果没有其他方法,则必须使用 imaplib。
代码如下:
from imbox import Imbox
import html2text
with Imbox('<IMAP SERVER>',
username='<USER>',
password='<PASS>',
ssl=True,
ssl_context=None,
starttls=False) as imbox:
unread_inbox_messages = imbox.messages(unread=True)
for uid, message in unread_inbox_messages:
mail_from = message.sent_from[0]['email']
mail_subject = message.subject
h = html2text.HTML2Text()
h.ignore_links = True
output = (h.handle(f'''{message.body['plain']}''').replace("\\r\\n", ""))
output = output.replace("\n", "")
mail_body = output[2:-2]
mail_dict = {
'email': {
'From': mail_from,
'Subject': mail_subject,
'Body': mail_body
}
}
print(mail_dict)
它返回这样的一行:
{'email': {'From': 'emailaddress@email.com', 'Subject': 'subject', 'Body': 'body message'}}
但电子邮件在邮箱中仍然未读,因此每次都需要相同的未读电子邮件。 是否可以修改我的代码,以便将电子邮件从未读更改为已读,也许还有一些额外的模块?
【问题讨论】: