MAPI 请求 - Exchange 服务器 (TCP/RPC) 与 IMAP 连接
MAPI Requests - Exchange Server (TCP/RPC) vs IMAP-Connection
我目前正在使用 C# 开发 Outlook VSTO-AddIn。我想读取每个 mailItem 的某些属性。 (例如 SenderName、SenderEmailAdress 等 ..)
据我所知,我已经理解 - 我有两种选择来实现这一目标:
- 访问 Outlook 对象模型
- 使用“属性 访问器对象”读取属于 MailItem 但未在 Outlook 对象模型中公开的 MAPI 属性。 (https://docs.microsoft.com/de-de/office/vba/api/outlook.propertyaccessor)
属性 访问器的一小段代码:
mailItem
是来自 Microsoft.Office.Interop.Outlook 命名空间的 MailItemClass Class 的一个对象。
PropertyAccessor olPA = mailItem.PropertyAccessor;
SenderMailAddress = olPA.GetProperty("http://schemas.microsoft.com/mapi/proptag/0x0C1F001F");
我遇到了以下奇怪的行为:
结果会有所不同,具体取决于我是通过 IMAP 还是通过 TCP/RPC-Connections 访问邮箱。
主要是在尝试访问某人发送的 mailItem 的属性时,其帐户已被删除。
使用 IMAP 连接时,MAPI 请求可以正常工作,TCP/RPC 它们不能。
我找到的关于该主题的大部分资源都来自 2009-2010 年,因此我不确定它们如何转换为 2016 版 Outlook。
任何能阐明 TCP/RPC 在这种情况下的区别的提示都将不胜感激。
两者之间确实没有区别:PR_SENDER_EMAIL_ADDRESS
被 MailItem.SenderEmailAddress
和 MailItem.PropertyAccessor.GetProperty
检索。
当您查看带有 OutlookSpy (I am its author) or MFCMAPI 的项目时,您真的看到了 PR_SENDER_EMAIL_ADDRESS
属性 吗?
我目前正在使用 C# 开发 Outlook VSTO-AddIn。我想读取每个 mailItem 的某些属性。 (例如 SenderName、SenderEmailAdress 等 ..) 据我所知,我已经理解 - 我有两种选择来实现这一目标:
- 访问 Outlook 对象模型
- 使用“属性 访问器对象”读取属于 MailItem 但未在 Outlook 对象模型中公开的 MAPI 属性。 (https://docs.microsoft.com/de-de/office/vba/api/outlook.propertyaccessor)
属性 访问器的一小段代码:
mailItem
是来自 Microsoft.Office.Interop.Outlook 命名空间的 MailItemClass Class 的一个对象。
PropertyAccessor olPA = mailItem.PropertyAccessor;
SenderMailAddress = olPA.GetProperty("http://schemas.microsoft.com/mapi/proptag/0x0C1F001F");
我遇到了以下奇怪的行为: 结果会有所不同,具体取决于我是通过 IMAP 还是通过 TCP/RPC-Connections 访问邮箱。 主要是在尝试访问某人发送的 mailItem 的属性时,其帐户已被删除。 使用 IMAP 连接时,MAPI 请求可以正常工作,TCP/RPC 它们不能。
我找到的关于该主题的大部分资源都来自 2009-2010 年,因此我不确定它们如何转换为 2016 版 Outlook。
任何能阐明 TCP/RPC 在这种情况下的区别的提示都将不胜感激。
两者之间确实没有区别:PR_SENDER_EMAIL_ADDRESS
被 MailItem.SenderEmailAddress
和 MailItem.PropertyAccessor.GetProperty
检索。
当您查看带有 OutlookSpy (I am its author) or MFCMAPI 的项目时,您真的看到了 PR_SENDER_EMAIL_ADDRESS
属性 吗?