C#-EWS-在Exchange服务上为Outlook电子邮件设置自定义属性

时间:2019-08-15 11:28:03

标签: c# outlook vsto exchangewebservices outlook-addin

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

  1. 不在Exchange服务器上,对吗?
  2. 如果我想防止对同一封邮件执行第二次操作,比如说在重新安装Outlook或在另一台计算机上使用相同的Outlook配置文件后,该怎么办?

非常感谢您

2 个答案:

答案 0 :(得分:0)

  

不是在Exchange服务器上,对吧?

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

  

如果我想防止在同一封邮件上执行第二次操作,比如说在重新安装Outlook或在另一台计算机上使用相同的Outlook配置文件后,该怎么办?

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

答案 1 :(得分:0)

使用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级别上的数据。