題 在Outlook中搜索任意電子郵件標頭的文件夾


我想在Outlook中為非標準電子郵件標題創建一個搜索文件夾。即這一個:

X-Bugzilla-Changed-Fields: Status Resolution

是否可以搜索此類標題?我正在使用Outlook 2007。


3
2017-11-21 00:16


起源


我不明白為什麼不。你嘗試過什麼?
@RandolphWest,在搜索文件夾條件的高級選項卡中,我可以從字段下拉列表中選擇一個字段,但它們似乎都不合適。我可以在Field下的框中粘貼我的標題,但是我無法選擇條件。 “更高級”按鈕呈灰色。 - dangph


答案:


我最近試圖做同樣的事情並在搜索網頁時遇到了你的問題。我也沒能找到任何方法來使用搜索文件夾來檢查標題。我的假設是因為互聯網標題並不是真正的“交換字段”,這意味著我不相信在Exchange服務器本身內發送的任何“內聯網”電子郵件(就像您通過有趣的貓圖片[LOLZ!]發送的那封電子郵件)你的同事......)有這樣的標題。但這是我提出的我正在使用的解決方法。

我在規則嚮導中設置了一條新規則,在收到新郵件時檢查標題。如果找到特定字符串,則將消息分配給特定類別。在我的情況下,我正在尋找來自我們的最佳實際請求跟踪服務器的消息,在每個標題中都是字符串“RT-ticket:”。如果我的規則在標題中找到該字符串,則將該消息分配給我創建的名為“RT Tickets”的類別。 (我創建了這個沒有顏色的類別,所以它不那麼突兀。)然後我可以創建一個搜索文件夾來查找該類別的消息。額外的步驟但問題解決了。我在Outlook 2007中完成了此操作,但它應該適用於支持規則嚮導檢查標頭然後分配到類別的任何版本的Outlook。

這樣做的缺點是1)我的增長列表中的另一個規則,以及2)如果我想將此應用於已經收到的電子郵件,我需要先完成並手動運行針對這些文件夾的規則。在這一點上,我只關心目前收件箱中的新消息或者前進的消息,因此我只是將規則設置為在創建時運行並且已經處理完畢。使用類別的一個已發現的好處是,您可以將其顯示為消息列表中的列。我不確定我是否會按照我的意圖使用搜索文件夾,我可能會按類別對收件箱進行排序以找到所需的郵件。

如果有人需要創建擴展規則的步驟,我可以這樣做,只需發表評論。我希望,如果一個人足夠知識,可以在互聯網電子郵件標題中挖掘,那麼創建一個Outlook規則就會很老套。他們擁有的嚮導非常簡單。


4
2018-06-04 22:55



就像cpow和OP,dangph一樣,我希望我們可以在搜索文件夾界面中為消息頭添加一個字段,就像我們在規則中那樣。 cpow的訣竅(使用規則來分配類別,然後使用搜索文件夾來找到它)總比沒有好,而且需要這種能力的人肯定會注意到它。感謝分享。但我很想知道a)是否有某種方法可以搜索我們缺少的搜索文件夾中的標題,或者b)在以後的outlook版本中添加(或將會)。我在2010年。@ dangph是在2007年。不知道cpow正在使用什麼。 - charlie arehart
cpow正在使用Outlook 2007(編輯我的回答來反映這一點),但我可能很快會在2010年或之後。我當然希望MS在某些方麵包含標題搜索。除非您處於一個只有內部Exchange電子郵件流動的封閉環境中,否則您將至少有一些帶有標題的消息,此時具有這樣的搜索功能是值得的。您認為,因為該功能適用於框架已經存在的規則,搜索功能可以掛鉤。 - cpow


此PowerShell腳本搜索Inbox中的所有標頭以進行匹配。運行可能需要一段時間,具體取決於您的收件箱大小。一些警告適用,其中最重要的是可能殘留的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

如果存在非零匹配集,則返回類似以下內容的內容。

收到:來自q0plumsmtp03-06.purd.phy5.mysrver.net(68.178.213.11)的q0PWrc6HT002.rc6.mysrver.net(148.168.131.21),Microsoft SMTP Server id 14.2.18.1; 2014年8月13日星期三18:42:57 -0700    [...]

然後,您可以將$ MatchString分配更改為您要查找的標題字符串。如果要使用正則表達式來概括搜索,PowerShell也可以實現這一點。


3
2017-09-27 19:02