使用 Python 中的 MessageID 和 Win32com 模块回复 Outlook 电子邮件
Reply to an Outlook email using the MessageID and Win32com module in Python
所以我知道如何查看收件箱(或任何其他文件夹)并找到要回复的电子邮件。但是,就我而言,我有一个 .msg 电子邮件文件,我从中提取了 MessageID,我希望使用 win32com 模块来回复该特定电子邮件。
基本上我在找这样的东西:
from extract_msg import Message
msg = Message("message.msg")
outlook = win32com.client.Dispatch('outlook.application')
mail = outlook.CreateItem(0x0)
mail.To = "; ".join(to)
mail.Subject = subject
mail.Body = body
mail.InReplyTo = msg.messageId
我知道使用 smtplib 模块可以做类似的事情:
message['In-Reply-To'] = msg.messageId
但我无法让 smtplb 与 Outlook 一起工作。因此,我正在使用 win32com。
您需要使用 MailItem.PropertyAccessor.SetProperty
.
设置 PR_IN_REPLY_TO_ID
MAPI 属性(DASL 名称 "http://schemas.microsoft.com/mapi/proptag/0x1042001F"
)
PR_IN_REPLY_TO_ID
属性 应设置为 PR_INTERNET_MESSAGE_ID
属性 值。确保此类值存在于 Outlook 邮件中。您可以通过以下方式获取 Outlook 中的值(示例是 C#,但 Outlook 对象模型对所有编程语言都是通用的):
string PR_INTERNET_MESSAGE_ID = "http://schemas.microsoft.com/mapi/proptag/0x1035001F";
Microsoft.Office.Interop.Outlook.PropertyAccessor pal = mailItem.PropertyAccessor;
string Internet_Message_Id = pal.GetProperty(PR_INTERNET_MESSAGE_ID).ToString();
所以我知道如何查看收件箱(或任何其他文件夹)并找到要回复的电子邮件。但是,就我而言,我有一个 .msg 电子邮件文件,我从中提取了 MessageID,我希望使用 win32com 模块来回复该特定电子邮件。
基本上我在找这样的东西:
from extract_msg import Message
msg = Message("message.msg")
outlook = win32com.client.Dispatch('outlook.application')
mail = outlook.CreateItem(0x0)
mail.To = "; ".join(to)
mail.Subject = subject
mail.Body = body
mail.InReplyTo = msg.messageId
我知道使用 smtplib 模块可以做类似的事情:
message['In-Reply-To'] = msg.messageId
但我无法让 smtplb 与 Outlook 一起工作。因此,我正在使用 win32com。
您需要使用 MailItem.PropertyAccessor.SetProperty
.
PR_IN_REPLY_TO_ID
MAPI 属性(DASL 名称 "http://schemas.microsoft.com/mapi/proptag/0x1042001F"
)
PR_IN_REPLY_TO_ID
属性 应设置为 PR_INTERNET_MESSAGE_ID
属性 值。确保此类值存在于 Outlook 邮件中。您可以通过以下方式获取 Outlook 中的值(示例是 C#,但 Outlook 对象模型对所有编程语言都是通用的):
string PR_INTERNET_MESSAGE_ID = "http://schemas.microsoft.com/mapi/proptag/0x1035001F";
Microsoft.Office.Interop.Outlook.PropertyAccessor pal = mailItem.PropertyAccessor;
string Internet_Message_Id = pal.GetProperty(PR_INTERNET_MESSAGE_ID).ToString();