vba - 在 Outlook VBA 中使用 .Restrict 方法过滤单个收件人电子邮件地址

标签 vba outlook outlook-2010 outlook-filter

我在 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/

相关文章:

excel - 根据包含行号的变量在 Excel 中选择单元格

excel - 如何在窗体窗口打开时保持 VBA 中的代码运行?

excel - IsNumeric 函数对于空单元格返回 true

vba - Excel - 如何沿行增加公式引用

c# - 扩展 Outlook 2010 中的用户界面以添加到右键单击菜单

c# - 当使用 System.Net.Mail 发送时,HTML4.0 SSRS 报告在 Outlook 中被压缩。它可以修复吗?

outlook - Windows、Outlook 或 Exchange 是否有用于读取 iCal 格式的 API?

c# - Outlook .find .restrict 方法中使用的所有可能的表达式键是什么?

c# - 构建失败 : Outlook 2010 VSTO Add-In

css - 时事通讯中的 Outlook 2007/2010 和 GMail 段落间距问题