【问题标题】:MAPI Requests - Exchange Server (TCP/RPC) vs IMAP-ConnectionMAPI 请求 - Exchange Server (TCP/RPC) 与 IMAP 连接
【发布时间】:2021-03-25 02:56:41
【问题描述】:

我目前正在使用 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 类的对象。

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 在这种情况下的区别的提示。

【问题讨论】:

    标签: c# outlook vsto imap mapi


    【解决方案1】:

    两者之间实际上没有区别:PR_SENDER_EMAIL_ADDRESSMailItem.SenderEmailAddressMailItem.PropertyAccessor.GetProperty 检索。

    当您查看带有OutlookSpyMFCMAPI 的项目时,您是否真的看到了PR_SENDER_EMAIL_ADDRESS 属性?

    【讨论】:

    • 非常感谢!!我没有听说过这些应用程序。即使在 MFCMAPI 中正确设置了 PR_SENDER_EMAIL_ADRESS 属性,我还是从该属性中得到了 \OU=(name of my organisatzion, ...\CN=SURNAME LASTNAME 形式的东西。但是,我尝试使用 PR_SENDER_SMTP_ADDRESS_A 效果很好。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-14
    • 1970-01-01
    • 2016-02-02
    • 2011-12-27
    • 1970-01-01
    • 2011-08-05
    相关资源
    最近更新 更多