按发件人电子邮件地址查找邮件 - 过滤语法

时间:2012-08-26 08:53:54

标签: c# outlook vsto outlook-addin outlook-2010

在Outlook 2010加载项中,我想在给定电子邮件地址发送的文件夹中找到项目:

MailItem FindEmailFromSender(MAPIFolder folder, string emailAddress)
{
    string filter = "[sender] = '" + emailAddress + "'"; // This filter is wrong.
    return folder.Items.Find(filter) as MailItem;
}

看起来这应该是超级简单的,但我找不到正确的语法。过滤发件人电子邮件地址的正确过滤器语法是什么?

3 个答案:

答案 0 :(得分:2)

根据您需要使用的MailItem documentation

[SenderEmailAddress]代表发件人的电子邮件地址

[SenderName]代表发件人的显示名称

您还应注意,属性名称区分大小写。

答案 1 :(得分:1)

您可能正在寻找电子邮件帐户属性过滤器。这个例子对我有用......

string filter = "[E-mail Account] = '" + emailAddress + "'"; // filters on exact address
return folder.Items.Find(filter) as MailItem;

如果您想按发件人名称进行搜索,可以使用:

string filter = "[From] = '" + senderName + "'"; // filters on exact sender name "Bob Johns"
return folder.Items.Find(filter) as MailItem;

另请参阅使用“高级查找”MSDN for item filtering reference和此MSDN blog post describing how to find DASL property names

答案 2 :(得分:1)

感谢answer above的nemesv。我还设法找出了如何在“代表”另一个帐户发送电子邮件时找到发件人地址,这要归功于另一个问题this answer。我把它包括在这里是为了完整性:

MailItem FindEmailSentOnBehalfSender(MAPIFolder folder, string emailAddress)
{
    string filter = "@SQL=\"http://schemas.microsoft.com/mapi/proptag/0x0065001F\" = '{0}'";
    return folder.Items.Find(string.Format(filter, emailAddress)) as MailItem;
}