在Outlook 2010加载项中,我想在给定电子邮件地址发送的文件夹中找到项目:
MailItem FindEmailFromSender(MAPIFolder folder, string emailAddress)
{
string filter = "[sender] = '" + emailAddress + "'"; // This filter is wrong.
return folder.Items.Find(filter) as MailItem;
}
看起来这应该是超级简单的,但我找不到正确的语法。过滤发件人电子邮件地址的正确过滤器语法是什么?
答案 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;
}