ツナ缶雑記

ぐうたらSEのブログです。主にマイクロソフト系技術を中心に扱います。

Azure DevOpsから送信されてくるメールをプロジェクト別にフォルダへ振り分ける方法

f:id:masatsuna:20200613145825p:plain Azure DevOps の組織やプロジェクトに複数所属していると、各プロジェクトから送られてくるメールが全く同じアドレスから、同じようなタイトルで送られてきてしまいます。 普通にメールの振り分けを行おうとしても、送信元メールアドレスやタイトルなどから振り分けるルールを作るのはなかなか困難です。

今回は、 Azure DevOps から送られてくるメールを組織別、プロジェクト別に振り分ける方法を解説しようと思います。

なおこの記事に記載している内容は、2020年6月10日時点の動作に基づくものであり、今後変更される可能性もあります。 また解説している内容について、公式に仕様が明記されていない内容であることに注意してください。

メールヘッダーを確認する

Azure DevOps が送信するメールには、 X-VSS- で始まる特別なメールヘッダーが設定されてきます。 具体的には以下のような値が設定されています。

X-VSS-Scope: <組織名>/<プロジェクト名>
X-VSS-Event-Type: ms.vss-build.build-completed-event
X-VSS-Subscription-ID: <何の値かよくわからない。。。>
X-VSS-Event-Initiator: <イベントを起こした人の名前>
X-VSS-Event-Initiator-Ascii: <イベントを起こした人の名前>
X-VSS-Event-Trigger: Successfully Completed

  このメールは、ビルドが成功したときに送られてきたメールから抜き出したものです。 X-VSS-Event-TypeX-VSS-Event-Trigger の値からそのあたりが読み解けます。

この中で X-VSS-Scope の値を参照すると、メールの送信元となる組織名、プロジェクト名がわかります。 例えば私が検証に使用している組織/プロジェクトであれば、以下のような値になります。

X-VSS-Scope: tsuna-can/Sample.Project

お使いのメーラーで、メールヘッダーによる振り分けルールを作成することで、メールを組織別、プロジェクト別に振り分けることができます。

プロジェクト名にマルチバイト文字を使っている場合

プロジェクト名に日本語などのマルチバイト文字を使っている場合は注意が必要です。 例えば "tsuna-can" という組織に "サンプルプロジェクト" という日本語名のプロジェクトを作成してメールを投げさせた場合、以下のようなメールヘッダーが送られてきました。

X-VSS-Scope: tsuna-can/??????????

メールでマルチバイト文字を扱うことってめんどくさいことで有名ですが、そのあたりの事情がここにも垣間見えます。

Outlook(M365)でメールヘッダーを確認する方法

あくまで参考レベルですが、 Outlook を用いてメールヘッダーを確認する方法も書いておきます。

まずメールを開きます(プレビューではありません)。 そしてリボンの左上にある [ファイル] を選択します。

f:id:masatsuna:20200610162310p:plain
[ファイル] を選択

[情報] メニューを選択して [プロパティ] を押下します。

f:id:masatsuna:20200610163052p:plain
[プロパティ] を押下

[インターネット ヘッダー] に付与されているメールヘッダーが表示されます。

f:id:masatsuna:20200610162903p:plain
メールヘッダーの確認