Office.Interop如何使用已发送文件夹中的PR_SEARCH_KEY查找电子邮件

时间:2018-02-12 01:36:09

标签: outlook interop office-interop

我使用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;
    }

1 个答案:

答案 0 :(得分:0)

正如您已经注意到的,OOM不会让您搜索任何二进制属性 - 您将需要扩展MAPI(C ++或Delphi)或Redemption(任何语言)。

最好的办法是在外发邮件上设置一些字符串属性,然后在“已发送邮件”文件夹中查找。