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

上記の回答について 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 に答える
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 を参照し、高度な検索を使用して DASL プロパティ名を検索する方法について説明しているこのMSDN ブログ投稿も参照してください。

于 2012-08-27T14:39:44.247 に答える