python - 如何在 Python 中通过 imap/pop3 识别 Outlook“消息 ID”?
问题描述
问题
我在 Azure 中使用“逻辑应用程序”来创建传入邮件队列。注册电子邮件的方式是使用“消息 ID”,它被描述为“消息的唯一标识符”。我希望能够使用此 ID 通过 imap 获取电子邮件 - 这可能吗?
逻辑应用“消息 ID”
- “消息 ID”示例:
AQMkADAwATM3ZmYAZS0yNTYwLWNkZAAzLTAwAi0wMAoARgAAA-U4TGbG56lEtdoXy_23gW0HAKhWKDtf5AJErHyhh_b9NYQAAAIBDAAAAKhWKDtf5AJErHyhh_b9NYQAAAIFgAAAA==
- 逻辑应用示例:
我试过的
我尝试将所有电子邮件下载为 eml,然后将它们读入 notepad++ 以查看 eml 文件中是否存在“消息 ID”,但它们不存在。
# Library for downloading emails
import imaplib
# Logging in
mail = imaplib.IMAP4_SSL("outlook.office365.com",993)
mail.login(email_user, email_pass)
# Downloading emails to eml
mail.select('Inbox')
typ, data = mail.search(None, 'ALL')
for num in data[0].split():
typ, data = mail.fetch(num, '(RFC822)')
f = open('%s/%s.eml' %("/my/path/", num), 'wb')
f.write(data[0][1])
mail.close()
mail.logout()
解决方案
我可以知道您为什么要通过 IMAP 获取电子邮件。因为您也可以使用 Outlook api 中的消息 ID 来获取电子邮件。这是您可以使用的api:
GET https://outlook.office.com/api/v2.0/me/messages/{message_id}
您可以在此处找到更多详细信息:
也只是为了更新,在 Outlook 中,您不会在 .eml 或正文中找到消息 ID,它在 Internet 标头中可用。大多数客户端实用程序下载所有消息的标头(包括消息 ID)、存储它们,然后对它们进行后处理。对于 Outlook,您可以在 Internet 标题中找到它,如下所示:
参考:https ://www.codetwo.com/kb/messageid/
不过,如果您想使用 IMAP 访问电子邮件,请尝试以下线程,看看是否有帮助:
https://www.go4expert.com/articles/accessing-email-using-imap-python-t28838/
希望能帮助到你。
推荐阅读
- javascript - webgl的obj文件中的纹理坐标
- python - Docker SDK Python 运行容器(如果它尚未运行)
- javascript - 通过上下文传递的状态返回未定义
- c# - 运算符“==”不能应用于相同的泛型类型
- java - 如何在 Spring Boot 中配置 gson?
- vb.net - 如何在 VB.NET 中编辑已在控制台中打印的文本?
- marklogic - MarkLogic 光学 API - 分组方式
- c# - 您的应用程序已使用来自 Google Cloud SDK 或 Google Cloud Shell 的最终用户凭据进行身份验证...texttospeech.googleapis.com
- intellij-idea - Intellij Idea:摆脱html文件中每次打开方括号后生成的空间
- prolog - 如何在 DOSBOX TurboProlog 中使用 if then else 条件