我在 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 不好(不是邮箱地址),而且我无法得到像这样的伪代码:
Set outItems = outItems.Restrict("[Recipients] = " & "'" & strEMAddress & "'")
最佳答案
您可以在 items.restrict 方法中使用 DASL 查询作为过滤字符串。
例如,要查找我发送给 Ali Raza 的所有邮件,我使用以下命令
str_fltr = "@SQL=""urn:schemas:httpmail:displayto"" ci_phrasematch '%Ali Raza%'"
上述 DASL 查询的好处在于它返回与多个收件人的匹配项,如果您使用 jet 语法搜索结果 x 将仅包含具有一个收件人的项目。 Jet 语法是您当前使用的语法。您应该使用 [To] 属性而不是 [Recipients]
在这里https://msdn.microsoft.com/en-us/library/cc513841%28v=office.12%29.aspx#SearchingOutlookData_Overview是您几乎可以了解有关在 Outlook 中搜索的所有内容的好地方。
在这里http://www.msoffice.us/Outlook/PDF/%28Outlook%202010%29%20Common%20DASL%20Property%20Tags.pdf是常见 DASL 标记的列表,如果您掌握了 DASL 语法,这些标记会派上用场。
关于vba - 在 Outlook VBA 中使用 .Restrict 方法过滤单个收件人电子邮件地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16286694/