MAPI 请求 - Exchange 服务器 (TCP/RPC) 与 IMAP 连接

MAPI Requests - Exchange Server (TCP/RPC) vs IMAP-Connection

我目前正在使用 C# 开发 Outlook VSTO-AddIn。我想读取每个 mailItem 的某些属性。 (例如 SenderName、SenderEmailAdress 等 ..) 据我所知,我已经理解 - 我有两种选择来实现这一目标:

  1. 访问 Outlook 对象模型
  2. 使用“属性 访问器对象”读取属于 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_ADDRESSMailItem.SenderEmailAddressMailItem.PropertyAccessor.GetProperty 检索。

当您查看带有 OutlookSpy (I am its author) or MFCMAPI 的项目时,您真的看到了 PR_SENDER_EMAIL_ADDRESS 属性 吗?