web-dev-qa-db-ja.com

Outlookで任意の電子メールヘッダーをフォルダーで検索する

Outlookで非標準の電子メールヘッダーの検索フォルダーを作成したいと思います。つまりこれ:

X-Bugzilla-Changed-Fields: Status Resolution

そのようなヘッダーを検索することは可能ですか? Outlook2007を使用しています。

4
dangph

私は最近同じことをしようとしていて、ウェブを検索しているときにあなたの質問に遭遇しました。私も検索フォルダを使用してヘッダーをチェックする方法を見つけることができませんでした。私の仮定は、インターネットヘッダーは実際には「Exchangeフィールド」ではないためです。つまり、Exchangeサーバー自体の内部で送信される「イントラネット」メール(面白い猫の写真[LOLZ!]で送信したメールなど)は信じられません。あなたの同僚...)にはそのようなヘッダーがあります。しかし、これが私が使用していることを思いついた回避策です。

ルールウィザードで、新しいメッセージを受信するとヘッダーを確認する新しいルールを設定しました。特定の文字列が見つかった場合は、メッセージを特定のカテゴリに割り当てます。私の場合、Best Practical Request Trackerサーバーからのメッセージを探しています。これらの各ヘッダーには、文字列「RT-ticket:」があります。ルールがヘッダーでこの文字列を見つけた場合、「RTチケット」という名前の作成したカテゴリにメッセージを割り当てます。 (このカテゴリは色なしで作成したので、目立たなくなりました。)次に、そのカテゴリだけのメッセージを検索する検索フォルダを作成できます。追加の手順ですが、問題は解決しました。これはOutlook2007で実行しましたが、ルールウィザードがヘッダーをチェックしてからカテゴリに割り当てることをサポートするすべてのバージョンのOutlookで機能するはずです。

これの欠点は、1)増え続けるリストのさらに別のルール、および2)すでに受信した電子メールにこれを適用する場合は、最初にそれらのフォルダーに対してルールを実行して手動で実行する必要があることです。この時点では、現在受信トレイにある新しいメッセージまたは今後到着するメッセージのみが気になるので、作成時に実行するようにルールを設定するだけで、それが処理されました。ただし、カテゴリを使用することの発見された利点は、メッセージリストの列として表示できることです。意図したとおりに検索フォルダを使用するかどうかはわかりません。目的のメッセージを見つけるために、受信トレイをカテゴリ別に並べ替えるだけです。

ルールを拡張して作成する手順が必要な場合は、コメントを残してください。ただし、インターネットの電子メールヘッダーを掘り下げるのに十分な知識があれば、Outlookルールの作成は古臭いものになることを願っています。彼らが持っているウィザードは非常に簡単です。

4
cpow

このPowerShellスクリプトは、受信トレイ内のすべてのヘッダーで一致するものを検索します。受信トレイのサイズによっては、実行に時間がかかる場合があります。いくつかの警告が適用されますが、その中でも特に、Outlook.exeプロセスが残っている可能性があります。これは、タスクマネージャで手動で、またはget-process "Outlook" | killを介してプログラムで強制終了できます。 PoweShellはどこにでもあるため、アクセスできると想定されていますが、使用している特定のOSではサポートが制限されている可能性があります。

$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)、MicrosoftSMTPサーバーID14.2.18.1; 2014年8月13日水曜日18:42:57-0700 [...]

次に、$ MatchStringの割り当てを探しているヘッダー文字列に変更できます。正規表現を使用して検索を一般化したい場合は、PowerShellでもそれが可能になります。

3
Justin Brown