4

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

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

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

4

3 回答 3

3

根据您需要使用的MailItem 文档

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

或者

[SenderName]发件人的显示名称

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

于 2012-08-28T06:36:11.603 回答
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 博客文章,描述如何使用 Advanced Find 查找 DASL 属性名称。

于 2012-08-27T14:39:44.247 回答
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;
}
于 2012-08-28T07:12:30.017 回答