【问题标题】:C# -EWS - Setting custom properties on Exchange service for Outlook emailC# -EWS - 在 Exchange 服务上为 Outlook 电子邮件设置自定义属性
【发布时间】:2019-12-21 20:27:53
【问题描述】:

我想在电子邮件中保存一个布尔属性。如果用户单击我的插件按钮,我想将选定的电子邮件标记为已处理。使用 MailItem 类的 UserProperties 将在本地文件夹上更新它。

  1. 不在 Exchange 服务器上,对吧?
  2. 如果我想阻止对同一邮件执行第二次操作,比如说在重新安装 Outlook 或在另一台计算机上使用相同的 Outlook 配置文件后,我应该怎么做才能避免这种情况?

非常感谢

【问题讨论】:

  • 为什么我的第一句话(“大家好”)消失了?? :)

标签: c# outlook vsto exchangewebservices outlook-addin


【解决方案1】:

您使用 Outlook 对象模型读取或设置的任何属性,都可以使用 EWS 访问。 Outlook 用户属性值存储为常规命名的 MAPI 属性;它们存储在服务器上的项目上,而不仅仅是本地。

您只需要在读取数据时请求扩展属性。见https://docs.microsoft.com/en-us/previous-versions/office/developer/exchange-server-2010/dd633697(v%3Dexchg.80)

您可以在OutlookSpy 中查看现有属性及其值 - 单击 IMessage 按钮以查看 MAPI 级别的属性(您还可以查看需要在 EWS 中使用的 DASL 属性名称)。或单击 EWS | GetItem 以查看 EWS 级别的数据。

【讨论】:

    【解决方案2】:

    不在 Exchange 服务器上,对吧?

    这取决于配置文件中使用的 Exchange 连接模式 - 是否缓存。在非缓存模式的情况下,您的更改将传播到服务器端。如果您处于缓存模式,您的更改将保存到本地存储,直到您/Outlook 将您的更改与服务器同步。您可以以编程方式启动此类操作,请参阅How To: Perform Send/Receive in Outlook programmatically 了解更多信息。

    如果我想防止在同一邮件上执行第二次操作,比如说在重新安装 Outlook 之后,或者在另一台机器上使用相同的 Outlook 配置文件后,我应该怎么做才能避免这种情况?

    我建议创建一个独立的 Web 服务,您可以在其中传递生成的项目的 ID(例如,哈希)并检查您是否需要添加用户属性以防止重复。或者只使用 EWS 检查属性是否已设置。

    【讨论】:

    • 谢谢尤金。您能否告诉我更多信息或给我一个链接/教程以获得第二个答案。当我的起点是我的 MailItem 对象时,如何使用 EWS 在 Echange 上设置属性?以及如何检查该属性是否已设置。
    猜你喜欢
    • 2011-08-10
    • 1970-01-01
    • 2012-01-21
    • 2011-04-08
    • 2014-05-08
    • 2011-12-03
    • 2013-06-04
    • 1970-01-01
    • 2016-07-04
    相关资源
    最近更新 更多