3

Access に、個々のメール アドレスから送信されたユーザーの受信トレイ内のすべてのメールを取得するコードがあります。このコード (以下の簡略化) は正常に動作します。

Dim outItems as Outlook.Items
Dim strEMAddress as string
Dim outFolder as Outlook.MAPIFolder

Set outFolder = outNS.GetDefaultFolder(olFolderInbox)
Set outItems = outFolder.Items

str="my@email.com"

Set outItems = outItems.Restrict("[SenderEmailAddress] = " & "'" & strEMAddress & "'")

SentMails フォルダーでも同様に機能するものを探しており、アイテムを特定の電子メール アドレスに送信されたものに制限しています。

.Recipients がコレクションであるという事実によってこれが複雑になることはわかっています (アイテムには複数の受信者がいる可能性があるため)。送信済みフィールドのいずれかで探している電子メールアドレスを含むアイテムのリストを返す方法があることを願っています (To/CC/bcc - ただし、これが簡単であれば To だけで十分です)。

オンラインで検索したところ、 .To はダメです (メールアドレスではありません) が見つかりました。次のような疑似コードを取得できません。

 Set outItems = outItems.Restrict("[Recipients] = " & "'" & strEMAddress & "'")
4

3 に答える 3

1

Redemptionの使用がオプションである場合は、RDOFolder を使用できます。Items.Restrict - Outlook オブジェクト モデルとは異なり、To/CC/BCC クエリを各受信者の受信者サブ制限PR_DISPLAY_NAMEPR_EMAIL_ADDRESSプロパティ (RES_SUBRESTRICTION / PR_MESSAGE_RECIPIENTS / RES_OR / PR_DISPLAY_NAME | PR_EMAIL_ADDRESS) に展開します。

set Session = CreateObject("Redemption.RDOSession")
Session.MAPIOBJECT = Application.Session.MAPIOBJECT
set Folder = Session.GetFolderFromID(Application.ActiveExplorer.CurrentFolder.EntryID)
set restrItems = Folder.Items.Restrict(" TO = 'user@domain.demo' ")

SQL クエリでプロパティを指定することもできますRecipients。これは、すべてのタイプの受信者 (to/cc/bb) と照合されます。

set restrItems = Folder.Items.Restrict(" Recipients = 'user@domain.demo' ")
于 2013-04-30T17:56:28.483 に答える