我的软件使用Outlook对象模型(Interop)。
在发送电子邮件之前,我会获取并保留我们创建的电子邮件的PR_SEARCH_KEY。
如果我想使用PR_SEARCH_KEY在已发送文件夹中查找电子邮件,如何在c#中使用Office.Interop (而不是EWS或不兑换)来执行此操作?
我试着从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;
}发布于 2018-02-12 11:12:12
正如你已经注意到的,面向对象模型不能让你搜索任何二进制属性--你需要扩展的MAPI (C++或者Delphi)或者赎回(任何语言)。
最好的方法是对传出邮件设置一些字符串属性,然后在“已发送邮件”文件夹中查找它。
https://stackoverflow.com/questions/48738420
复制相似问题