【RocketChat】Outlookで受信したメール本文をRocketChatに転送する
はじめに
Outlookのマクロを使用して、
条件に合致するメール本文をRocketChatに転送する仕組みを作りました。
イントラネットワーク(常駐先)でしか見られない情報を、
AWS上のRocketChatにとばして、
自社でも確認できるようにするというミッションです。
ちなみに、常駐先と合意の上で実装してます。
環境
- デスクトップPC Windows10
- Outlook2016(だったような)
- RocketChat2.0.0(だったような)
RocketChat側 準備
着信Webhookを作成します。 OutlookマクロからのHTTPリクエストに対して、 口を開けます。
下記の手順で、作成画面まで行きます。
管理
→サービス連携
→新しいサービス連携
→着信Webhook
以下のような設定で作成します。
最低限、自身で設定することは、
- 名前(オプション)
- 投稿先チャンネル
くらいです。
Outlookマクロに必要な情報は、
Webhook URLです。
自動で生成されるので、控えておきましょう。
Outlookマクロ 作成
こちらを参考に、
マクロを作る準備をしました。
マクロっていうと、Excelでは?って感じですが。
私もわからず、最初Excelで作っていました。
のちの工程で、Excelマクロを呼び出せないことがわかり、
ほへぇ、Outlookで作るのね!ってなりました。
マクロを実行するための事前準備
- Microsoft Scripting Runtimeの有効化
ツール
→参照設定
で参照可能ライブラリ一覧を開き、
Microsoft Scripting Runtimeにチェックを入れます。
外部ライブラリを使うために、必要、なんだったかな。
- VBA-JSONをインポート
マクロ内でJSONを生成するために必要なモジュールです。
上記のURLからダウンロードし、
JsonConverter.basをマクロにインポートします。
作成したマクロ
Sub CustomRule_Forward_to_RocketChat(Item As Outlook.MailItem) 'RocketChatとHTTP通信するために、ServerXMLHTTPオブジェクトを定義 Dim objHTTP As Object Set objHTTP = CreateObject("MSXML2.ServerXMLHTTP") 'URLも定義 Dim URL As String URL = "<RocketChat Webhook>" '転送するメール本文を入れ込むJsonオブジェクトを定義 Dim JsonObject As Object Set JsonObject = New Dictionary 'Jsonオブジェクトのキーtextにメール本文(Item.body)を入れ込む JsonObject.Add "text", Item.Body 'HTTP POSTリクエスト送信 objHTTP.Open "POST", URL, False objHTTP.setRequestHeader "Content-Type", "application/json" objHTTP.setProxy 2, "<プロキシサーバURL>" objHTTP.Send JsonConverter.ConvertToJson(JsonObject) End Sub
<RocketChat Webhook>には、
前工程で控えたWebhook URLを記載してください。
Outlookのメール仕分けルールを作成
メールを転送するトリガーは仕分けルールに仕掛けます。
事前準備
仕分けのアクションに「スクリプトを実行する」
という選択肢を使えるようにするために、
下記のレジストリのパラメータを追加します。
キー : HKEY_CURRENT_USER\Software\Microsoft\Office\xx.0\Outlook\Security
名前: EnableUnsafeClientMailRules
種類: REG_DWORD
値: 1 (有効)
仕分けルールの設定
- オプションを開いて、
仕分けルールと通知の管理
をクリック 新しい仕分けルールの作成
をクリック- 転送する条件を設定します。
- (例)[差出人]がXXXXの場合
- メッセージに対する処理を
スクリプトを実行する
にチェックします。 - スクリプトに前工程で作成したマクロを紐づけます。
これでこのルールを有効にして運用しておけばOK!
ちなみに、転送は以下の時間に限られます。
- Outlookを起動している時間
- RocketChatサーバを起動している時間
まとめ
Outlook起動し続けないといけなかったり、
なかなか制約がでかいですが。。
自社にいながらも、常駐先のイントラのメールに、
問い合わせなど来ていないか把握できるようになりました。