我使用Outlook对象模型(Interop)作为我的软件。
在发送电子邮件之前,我会收到并保留我们创建的电子邮件的PR_SEARCH_KEY。
如果我想使用PR_SEARCH_KEY在已发送文件夹中找到电子邮件,我如何使用Office.Interop(不是EWS或不兑换)在c#中执行此操作?
我试图从SentFolder.Items.Find(过滤器)中找到它。但它不起作用,因为PR_SEARCH_KEY是二进制的。
谢谢!
public Outlook.MailItem FindEmailFromSentFolder(string emailId)
{
try
{
if (_sentFolderItems == null)
return null;
// find the sent mail from sent folder based on PR_Serach_Key
var filter = string.Format("@SQL=\"http://schemas.microsoft.com/mapi/proptag/0x300B0102\" = '{0}'",
emailId);
var item = _sentFolderItems.Find(filter);
if (item != null && item is Outlook.MailItem)
return item as Outlook.MailItem;
}
catch (Exception ex)
{
return null;
}
return null;
}
答案 0 :(得分:0)
正如您已经注意到的,OOM不会让您搜索任何二进制属性 - 您将需要扩展MAPI(C ++或Delphi)或Redemption(任何语言)。
最好的办法是在外发邮件上设置一些字符串属性,然后在“已发送邮件”文件夹中查找。