有没有办法获取特定电子邮件ID的ID?

时间:2019-07-31 07:58:44

标签: python win32com

我正在创建在Outlook中发送电子邮件的机器人。机器人工作正常,但我想改进它。目的是向已联系的特定用户发送提醒-重播到现有电子邮件。一切将自动进行,信息(消息ID,提醒次数等)将存储在sqlite数据库中。我需要知道是否有一种方法来获取Outlook消息的ID(据我所知,在发送之前,每条消息都已分配了ID)或一些equalivent。我检查了许多来源,但无法获得满意的答案。感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

Outlook的对象模型具有EntryID属性:https://docs.microsoft.com/en-gb/office/vba/api/outlook.mailitem.entryid

您可以使用win32com查找与之相关的项目:

import win32com.client as win32
outlook = win32.Dispatch("Outlook.Application").GetNamespace("MAPI")

mailID = "00000000D6287E76248B24409DF..." #Abbreviated - these are very long, unique strings
email = outlook.Session.GetItemFromID(mailID)
print(email)

如果您需要找出哪个电子邮件具有ID,则可以遍历一个文件夹并按以下方式获取它:

folder2iterate = outlook.Folders("myemail@provider.com").folders("FolderName") #FolderName has to be localized to the language you are using. "Inbox" is not a universal name
for email in folder2iterate.Items:
    print(email, email.Sender, email.EntryID)