【发布时间】:2016-06-02 10:35:47
【问题描述】:
您好,我最近开始围绕 EWS 进行开发。我遇到的一个问题是,一个客户要求我将电子邮件导入数据库,他想根据 InternetMessageID 检测重复,这样他就不必导入重复的电子邮件,我的代码就到了这一点。
private static string GetInternetMessageID(Microsoft.Exchange.WebServices.Data.Item email)
{
EmailMessage emailMsg = email as EmailMessage;
string returnId = string.Empty;
if ((emailMsg != null)) {
try {
emailMsg.Load();
//loads additional info, without calling this ToRecipients (and more) is empty
} catch (ArgumentException ex) {
//retry
email.Load();
}
returnId = emailMsg.InternetMessageId;
} else {
//what to do?
}
return returnId;
}
我可以处理常规电子邮件,但对于特殊的交换对象,例如联系人、日历、帖子等,它不起作用,因为它无法将其转换为 EmailMessage 对象。
而且我知道您可以从这些对象中提取 internetMessageId。因为客户端曾经有另一个软件为他们提取这个ID,也许该属性不称为internetMessageID,我想我可能必须从internetMessageHeader中提取它。但是,当我尝试从 item 对象中获取它时,它只会给我一个错误。如何从这些“特殊”交换项目中获取 Internet messageID?
PS 我知道 item.id.UniqueID 但这不是我想要的,因为如果我将项目从文件夹移动到另一个文件夹作为交换,这个 id 会发生变化
【问题讨论】:
标签: c# .net exchange-server exchangewebservices