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

4
在 Outlook 2010 插件中,我想要按给定的电子邮件地址查找一个文件夹中发送的项目:
MailItem FindEmailFromSender(MAPIFolder folder, string emailAddress)
{
    string filter = "[sender] = '" + emailAddress + "'"; // This filter is wrong.
    return folder.Items.Find(filter) as MailItem;
}

看起来这应该很容易,但我就是找不到正确的语法。过滤发件人电子邮件地址的正确筛选器语法是什么?


可能属性名称是区分大小写的。你尝试过使用[Sender]吗? - nemesv
1
根据MailItem文档,你可能在寻找[SenderEmailAddress]属性... - nemesv
@nemesv - [SenderEmailAddress] 就行了。您能否把您的评论作为答案添加,这样我就可以接受它了吗? - gilly3
3个回答

3
根据 MailItem文档,您需要使用[SenderEmailAddress]表示发件人的电子邮件地址,或者使用[SenderName]表示发件人的显示名称。此外,请注意属性名称区分大小写。

1
感谢nemesv提供了上面的答案。我也通过另一个问题上的这个答案找到了如何在代表另一个帐户发送电子邮件时查找发件人地址的方法。为了完整起见,我在这里包含它:
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;
}

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项目筛选器参考和此MSDN博客文章描述如何使用高级查找找到DASL属性名称


不行,[E-mail account] 不起作用。我用 [From] 得到了混合的结果,在一封电子邮件中有效,但在另一封则无效。[SenderEmailAddress] 似乎可以使用。 - gilly3

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接