在 Outlook 中搜索任意电子邮件标题的文件夹

dan*_*gph 5 microsoft-outlook microsoft-outlook-2007 headers search-folder

我想在 Outlook 中为非标准电子邮件标题创建一个搜索文件夹。即这个:

X-Bugzilla-Changed-Fields: Status Resolution
Run Code Online (Sandbox Code Playgroud)

是否可以搜索此类标题?我正在使用 Outlook 2007。

cpo*_*pow 5

我最近也在尝试做同样的事情,在网上搜索时遇到了你的问题。我也未能找到任何使用搜索文件夹来检查标题的方法。我的假设是因为互联网标头并不是真正的“交换字段”,这意味着我不相信在 Exchange 服务器本身内发送的任何“内联网”电子邮件(例如您发送的带有有趣猫图片的电子邮件 [LOLZ!]你的同事...)有这样的标题。但这是我正在使用的解决方法。

我在规则向导中设置了一条新规则,在收到新消息时检查标头。如果找到特定字符串,则将该消息分配给特定类别。就我而言,我正在寻找来自我们的最佳实用请求跟踪服务器的消息,每个标头中都有字符串“RT-ticket:”。如果我的规则在标头中找到此字符串,它们就会将该消息分配给我创建的名为“RT Tickets”的类别。(我创建的这个类别没有颜色,因此不那么引人注目。)然后我可以创建一个搜索文件夹来查找该类别的消息。额外的步骤,但问题已解决。我已在 Outlook 2007 中完成此操作,但它应该适用于任何支持规则向导检查标题然后分配到类别的 Outlook 版本。

这样做的缺点是 1) 我不断增长的列表中的另一个规则,2) 如果我想将其应用于已收到的电子邮件,我需要首先针对这些文件夹仔细检查并手动运行该规则。此时,我只关心收件箱中当前的新消息或未来到达的消息,因此我只需将规则设置为在创建时运行,然后就可以了。使用类别的一个发现的好处是,您可以将其显示为消息列表中的一列。我不确定我是否会按照预期使用搜索文件夹,我可能只是按类别对收件箱进行排序,以便找到所需的邮件。

如果有人需要扩展创建规则的步骤,我可以这样做,只需发表评论即可。不过,我希望如果一个人有足够的知识来深入研究互联网电子邮件标题,那么创建 Outlook 规则将是一种过时的做法。他们拥有的向导非常简单。


小智 5

此 PowerShell 脚本搜索收件箱中的所有标头以查找匹配项。运行可能需要一段时间,具体取决于您的收件箱大小。需要注意一些注意事项,其中最重要的是可能存在残留的 Outlook.exe 进程。这可以在任务管理器中手动终止,也可以通过get-process "outlook" | kill. 由于 PoweShell 几乎无处不在,因此假设您可以访问它,但是您使用的特定操作系统对此的支持可能有限。

$MatchString = "X-Mailer: YahooMailWebService/0.8.201.700"
Add-type -assembly "Microsoft.Office.Interop.Outlook" | out-null
$namespace = new-object -comobject outlook.application
$MAPI = $namespace.GetNamespace("MAPI")
$Inbox = $MAPI.GetDefaultFolder([Microsoft.Office.Interop.Outlook.OlDefaultFolders]::olFolderInbox).Items
$Headers = `
    foreach ( $MailItem in $Inbox ) { 
        $MailItem.PropertyAccessor.GetProperty("http://schemas.microsoft.com/mapi/proptag/0x007D001E") 
    }
$namespace.Quit()
$MatchingHeaders = $Headers | where { $_.contains( $MatchString ) }
#sample output
$MatchingHeaders | Select-Object -First 1
Run Code Online (Sandbox Code Playgroud)

如果存在非零匹配集,则会返回类似以下内容的内容。

已收到:q0PWrc6HT002.rc6.mysrver.net (148.168.131.21) 从 q0plumsmtp03-06.purd.phy5.mysrver.net (68.178.213.11),Microsoft SMTP 服务器 ID 14.2.18.1;2014 年 8 月 13 日星期三 18:42:57 -0700 [...]

然后,您可以将 $MatchString 分配更改为您要查找的标头字符串。如果您想使用正则表达式来概括搜索,PowerShell 也可以实现这一点。