Outlook 搜索文件夹:搜索实际电子邮件地址,而不是显示名称

I s*_*ica 9 microsoft-outlook search search-folder

我需要一个 Outlook 搜索文件夹,它通过搜索发件人或收件人的实际电子邮件地址来查找电子邮件。例如,如果我想查找域example.com 中发件人的所有邮件,我使用搜索条件From... @example.com

在此处输入图片说明

但是搜索只返回@example.com出现在发件人显示名称中的消息(例如发件人:John Doe <john@example.com>)。如果姓名不包含他们的电子邮件地址,则该电子邮件不会出现在搜索结果中。

如何根据实际收件人/发件人/抄送电子邮件地址搜索电子邮件,即使显示名称中不存在该地址?


我试过的:

  • 我已经查看了“高级”选项卡上的所有可用字段。我看到“From”、“To”等字段,但它们的工作方式相同。
  • 我找到了这篇文章,它建议搜索主题字段和消息正文……但这非常不可靠。
  • 谷歌......但是有十亿个结果告诉我如何做我已经在做的事情。

I s*_*ica 5

我需要一个 Outlook 搜索文件夹,它通过搜索发件人或收件人的实际电子邮件地址来查找电子邮件。

可以配置搜索文件夹以根据发件人的实际电子邮件地址查找电子邮件(见下文)。然而,这是不是可能暴露实际的电子邮件地址,抄送,或密件抄送字段。可以在此答案的末尾找到原因的解释。

配置搜索文件夹以搜索发件人的实际电子邮件地址

注意: 这些说明是为 Office 2013 编写的,但该解决方案至少应适用于 Outlook 2007 及更高版本。

步骤 A:使用表单向 Outlook 添加自定义“发件人的实际地址”字段

这些步骤创建了一个自定义表单,该表单使用发件人的实际电子邮件地址向 Outlook 添加一个新字段:

  1. 使用文件名保存以下自定义 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
    
    Run Code Online (Sandbox Code Playgroud)
  2. 将 复制FromEmailAddress.cfg到您的特定语言 Microsoft Office 的 Forms 文件夹,位于:
    C:\Program Files (x86)\Microsoft Office\OfficeXX\FORMS\<LanguageID>

    • <OfficeXX>是包含版本号的 Office 文件夹(例如Office15Office 2013)
    • <LanguageID>是您的 4 位语言 ID(例如1033英语)。

      注意: 将文件保存到此文件夹需要管理权限。
      注意:C:\Program Files如果您有 32 位操作系统或 64 位操作系统上的 64 位版本的 Office ,则可能会安装Office。

  3. 在 Outlook 中,在功能区的“文件”选项卡上单击“选项”

  4. 单击左窗格中的高级,然后在开发人员组中单击自定义表单... 在此处输入图片说明
  5. 选项对话框中,单击管理表单...
  6. 表单管理器对话框中,单击安装... 在此处输入图片说明
  7. 导航到您保存FromEmailAddress.cfg文件的文件夹,选择它,然后单击打开
  8. 在打开的Form Properties窗口上单击OK,然后单击Close,然后单击 OK两次以关闭Outlook Options

有关如何将发件人的实际电子邮件地址公开为字段的信息,请参阅slipstick.com 文章

步骤 B:使用搜索文件夹标准中的自定义“发件人电子邮件地址”字段

这些步骤利用新创建的字段作为搜索文件夹的条件:

  1. 在“搜索文件夹条件”对话框的“高级”选项卡上,单击“字段”下拉列表,然后单击“表单...”
    在此处输入图片说明
  2. 在左窗格中选择从电子邮件地址,单击添加 ->然后关闭在此处输入图片说明
  3. 再次单击“字段”下拉菜单,指向“发件人电子邮件地址”,然后单击弹出菜单上的“发件人电子邮件地址”。
    在此处输入图片说明
  4. 指定所需的条件和值,然后单击添加到列表,然后单击确定关闭对话框。 在此处输入图片说明

实际的收件人、抄送和密件抄送电子邮件地址不能用作搜索文件夹的标准...

彻底搜索 Outlook 的其他预定义字段、可通过 Outlook 的对象模型使用MAPI 字段,以及对OutlookSpy公开的属性的审查显示,没有将这些电子邮件地址公开为文本的字段。有PR_MESSAGE_RECIPIENTS属性,但不幸的是,这是一个包含每个收件人作为单独项目的对象。本机访问(使用上面的自定义表单方法)不返回任何内容。

...除了一个几乎无用的例外

使用此slipstick.com 文章中的VBA,我能够将用户定义字段(UDF) 添加到包含单个字符串的消息中,该字符串包含格式为 的收件人电子邮件地址john@example.com, jane@example.com。但是,在搜索文件夹高级条件的字段列表中选择 UDF 时,只有收件箱中定义的 UDF 可用:

在此处输入图片说明

如果收件箱中存在填充了自定义字段的邮件,则搜索文件夹会找到它们。但是,位于其他文件夹中的此类消息不包含在结果中。除非您的搜索文件夹只对收件箱感兴趣,否则这是毫无用处的。

此处此处此处记录UDF 在搜索文件夹标准中不起作用的原因。

预定义字段仍然是“最佳”解决方案

当涉及到收件人:抄送:密件抄送:字段时,仍然最好使用搜索文件夹条件中的预定义字段,并希望实际的电子邮件地址是显示名称的一部分(通常是)。