我需要一个 Outlook 搜索文件夹,通过搜索发件人或收件人的实际电子邮件地址来查找电子邮件。例如,如果我想查找来自域中发件人的所有邮件示例.com,我使用搜索条件来自...@example.com:
但搜索仅返回@example.com
发件人中出现的邮件显示名称(例如来自:约翰·多伊 <[电子邮件保护]>)。如果姓名中不包含其电子邮件地址,则电子邮件不会出现在搜索结果中。
如何根据实际的收件人/发件人/抄送电子邮件地址搜索电子邮件,即使显示名称中没有该地址?
我尝试过的:
- 我已经查看了先进的选项卡。我看到了“发件人”、“收件人”等字段,但它们的工作方式相同。
- 我发现这个帖子,建议搜索主题字段和邮件正文……但这非常不可靠。
- 谷歌......但有十亿个结果告诉我如何做我正在做的事情。
答案1
我需要一个 Outlook 搜索文件夹,通过搜索发件人或收件人的实际电子邮件地址来查找电子邮件。
可以配置搜索文件夹以根据发件人的实际电子邮件地址查找电子邮件(见下文)。但是,不是可能会暴露收件人、抄送或密送字段的实际电子邮件地址。原因的解释可在本答案的末尾找到。
配置搜索文件夹以搜索发件人的实际电子邮件地址
笔记: 这些说明是针对 Office 2013 编写的,但该解决方案至少适用于 Outlook 2007 及更高版本。
步骤 A:使用表单向 Outlook 添加自定义“发件人的实际地址”字段
以下步骤将创建一个自定义表单,该表单会向 Outlook 添加一个新字段,其中包含发件人的实际电子邮件地址:
使用以下文件名保存以下自定义 Outlook 表单配置
FromEmailAddress.cfg
:[Description] MessageClass=IPM.Note CLSID={00020D31-0000-0000-C000-000000000046} DisplayName=From Email Address Category=Standard Subcategory=Form Comment=This forms is used to expose a sender's actual email address. LargeIcon=notel.ico SmallIcon=notes.ico VersionMajor=1 VersionMinor=0 Locale=enu Hidden=1 Owner=Microsoft [Platforms] Platform2=NTx86 Platform9=Chicago [Platform.NTx86] CPU=ix86 OSVersion=WinNT3.5 [Platform.Chicago] CPU=ix86 OSVersion=Win95 [Properties] Property01=FromEmailAddress [Property.FromEmailAddress] ;PropTag=PR_SENDER_EMAIL_ADDRESS, 0x0C1F001E Type=30 ; 001E = 30 in decimal NmidInteger=0xc1f ; 0C1F DisplayName=From E-mail Address [Verbs] Verb1=1 [Verb.1] DisplayName=&Open Code=0 Flags=0 Attribs=2 [Extensions] Extensions1=1 [Extension.1] Type=30 NmidPropset={00020D0C-0000-0000-C000-000000000046} NmidInteger=1 Value=1000000000000000
将其复制
FromEmailAddress.cfg
到您特定语言的 Microsoft Office 的 Forms 文件夹,位于:
C:\Program Files (x86)\Microsoft Office\OfficeXX\FORMS\<LanguageID>
<OfficeXX>
是包含版本号的 Office 文件夹(例如Office15
Office 2013)<LanguageID>
是您的 4 位数语言 ID(例如1033
英语)。笔记: 需要管理权限才能将文件保存到此文件夹。
笔记: 如果您有 32 位操作系统,则可以安装 Office;C:\Program Files
如果您有 64 位操作系统,则可以安装 64 位版本的 Office。
在 Outlook 中,文件单击功能区选项卡选项。
- 点击先进的在左侧窗格中,然后在开发人员群组点击自定义表格...
- 在里面选项对话框中,点击管理表格...
- 在里面表单管理器对话框中,点击安装...
- 导航到保存
FromEmailAddress.cfg
文件的文件夹,选择它,然后单击打开。 - 点击好的在表单属性然后打开窗口关闭, 其次是好的两次关闭Outlook 选项。
归功于此slipstick.com 文章有关如何将发件人的实际电子邮件地址显示为字段的信息。
步骤 B:在搜索文件夹的条件中使用自定义“发件人电子邮件地址”字段
以下步骤利用新创建的字段作为搜索文件夹的条件:
- 在先进的选项卡搜索文件夹条件对话框中,单击场地下拉列表,然后点击形式...
- 在左侧窗格中选择发件人电子邮件地址, 点击添加 ->然后关闭。
- 点击场地再次下拉,指向发件人电子邮件地址然后点击发件人电子邮件地址在弹出菜单上。
- 指定所需的条件和值,然后单击添加到列表, 然后好的关闭对话框。
实际的收件人、抄送人和密送电子邮件地址不能用作搜索文件夹的条件……
彻底搜索 Outlook 的其他预定义字段,可通过 Outlook 的对象模型获取 MAPI 字段,以及对所暴露属性的审查展望间谍显示没有显示这些电子邮件地址的字段作为文本.有公共消息接收者属性,但不幸的是,这是一个将每个收件人作为单独项目包含的对象。本机访问(使用上面的自定义表单方法)不会返回任何内容。
...有一个几乎无用的例外
使用此处的 VBAslipstick.com 文章我能够将用户定义字段 (UDF) 添加到包含单个字符串的消息中,该字符串包含以下格式的收件人电子邮件地址。但是,在搜索文件夹高级条件的字段列表中选择 UDF 时,只有收件箱中定义的 UDF 可用:[email protected], [email protected]
如果收件箱中存在填充了自定义字段的邮件,搜索文件夹就会找到它们。但是,位于其他文件夹中的此类邮件不会包含在结果中。除非您的搜索文件夹只对收件箱感兴趣,否则这毫无用处。
记录了 UDF 在搜索文件夹标准中不起作用的原因这里,这里和这里。
预定义字段仍然是“最佳”解决方案
当谈到到:,抄送:, 和密送:字段,最好还是使用搜索文件夹条件中的预定义字段,并且希望实际的电子邮件地址是显示名称的一部分(通常是)。
答案2
如果不创建自定义表单,您无法使用“搜索文件夹”中的“收件人/发件人/抄送/密件抄送”字段进行花哨的搜索,但是解决方法使用“来自特定人员的邮件”选项查找特定域中的发件人。(这也适用于“来自和发送给特定人员的邮件”选项。)
答案3
遗憾的是,您无法使用搜索文件夹执行此操作。作为一种解决方法,您可以使用过滤视图:
- 创建一个新的 Outlook 文件夹视图(视图功能区选项卡)。
- 为 SQL 选项卡上创建的视图指定过滤器:
"http://schemas.microsoft.com/mapi/proptag/0x5D02001F" LIKE '%@example.com'
这0x5D02001F属性是 PR_SENT_REPRESENTING_SMTP_ADDRESS MAPI 属性。如果需要,您还可以添加更多属性以使用 AND/OR 进行检查。
替代方法(使用用户定义字段)
打开收件箱并创建用户定义字段:
1.1. 在看法单击功能区选项卡查看设置按钮。1.2
. 在高级视图设置窗口单击列...按钮。1.3
. 在显示列窗口单击新专栏...按钮。1.4
. 在新专栏窗口中输入所需的名称(例如,“发件人电子邮件”,不带引号),然后离开类型和格式作为文本.
1.5. 点击好的,好的,好的在所有对话框中确认。将 0x5D02001F 属性复制到发件人电子邮件您可以使用 VBA 或第三方软件以任何方式复制邮箱中所有邮件的属性。以下是 VBA 的关键部分(如果您要编写脚本来复制属性):
... ' for each objMailItem get the value of 0x5D02001F property
Set objProp = objMailItem.UserProperties.Add("Sender Email", 1, False)
objProp.Value = ... ' The value of 0x5D02001F property
- 创建自定义搜索文件夹并指定标准在先进的标签:字段 -> 收件箱中的用户定义字段 -> 发件人电子邮件包含@example.com。
差不多就是这样了。完美适用于整个邮箱。
答案4
用户 Worthwelle 就如何识别发件人的域名给出了一个很好的答案,因此真正的挑战是为收件人的域名建立测试。虽然答案accepted
确实创建了一种方法来做到这一点,但我认为它有点复杂,超出了大多数用户的理解范围。
使用规则/类别解决相同结果
为了解决这个问题中提出的用例场景,这里有一种方法可以确定并一致地让搜索文件夹引用所有来自/到/抄送包含@example.com
域的电子邮件。
1)创建两条规则
这些操作应在 Outlook Web 界面中完成,方法是单击设置进而查看所有 Outlook 设置并选择规则。请参阅下面的设置,但请注意:
- 我们正在标记所有收件人拥有 @example.com 域名的邮件
- 第二条规则标记
sender
地址是否包含@example.com - 将其导入
Run Rule Now
或进入 Outlook 并进行搜索然后标记。这将确保所有以前的消息都已正确标记。 - 今后收到的所有包含此域的消息都将使用此标签进行分类。
2)根据标签创建搜索文件夹
Categorized Mail
这应该很简单。创建一个新的搜索文件夹,然后选择部分中的提示Organizing Mail
。然后单击choose
并选择上一步中设置规则的相应标签(在本例中为 exampleTag)。
最终,搜索文件夹无法复制搜索栏可以复制的结果,这似乎很奇怪,但这可以帮我完成。