Power Automate のメール送信はいろいろと便利なのですが、大量に外部にメールを送れてしまうことに懸念があり、というケースも。そんなシーンがあれば、「Power Automate で組織外へメール送信」を検知・ブロック・許可する、ということで役立つかもしれません。
検知する
Power Automate でメールを送信するとき、メールのヘッダーに特定の文字列が含まれています。Exchange 管理センターのルールで、その文字列を含んでいる場合は、BCCでメールを転送する、という設定を組みます。
検知したメールを、リストに追記する
可視化・調査しやすいように、リストへ追記したいところです。日時、差出人、件名、宛先があればよいのですが、「フローの固有ID」を取得しておくと後々便利です。
Office 365 Outlook には、「電子メールの取得」と「メールのエクスポート」というアクションがあります。
前者のほうが簡単で、日時、件名、差出人、宛先などを取るだけなら十分です。
ヘッダーを取得したいなら後者で、この方法だと、ひと手間かける必要があります。フロー固有IDを取得するなら、こちらを使います。
x-ms-mail-application: Microsoft Power Automate; User-Agent: azure-logic-apps/1.0 (workflow afa0fb167803450aa650267e95d43287; version 08586093372199532216) microsoft-flow/1.0
そのうえで、固有IDを表す
afa0fb167803450aa650267e95d43287
を探します。
エクセルで実施するなら
- Find関数で、x-ms-mail-applicationという文字列が何文字目かを取得
- 同じくFind関数でそこから「+92文字目以降の最初の"; version "」が何文字目かを取得
- mid関数で、開始文字位置と文字数指定して抜き出す
- indexOf関数、x-ms-mail-applicationという文字列が何文字目かを取得…1
- add関数で、上記1の値+92+44する…2
- substring関数で、開始文字位置(1)、文字数指定(2)で、抜き出す…3
- 上記3で取得した文字列から、同様の手法で "; version "が何文字目かを取得し
- 上記3で取得した文字列から、"; version "までの文字数-1までを取得する
44なのは、"; version "が10文字、私が知る範囲でフローは32文字だけど確実なソースを見つけられなかったので、2ケタ余剰持たせていったん、いったん抜き出してから余分な文字を削除するためです。
送信元や件名などをエクセルファイルに書き込むのであれば、上記1~3だけPower Automateで実施して、残りはエクセルに書き込んでから関数で処理するほうがフロー自体はシンプルです。私はこれで処理しました。(エクセルの関数のほうが私は扱いやすかった)Power AutomateでもFind関数が使えたらなぁ…。
追記:テキスト関数というコネクタがあり、[テキストの位置を検索する][部分文字列]というアクションがあります。関数より、こっちを使うほうがラクかもしれません。
ブロックする・許可する
先ほどのトランスポートルールでは、BCCで送信する、にしました。条件に当てはまる場合は、説明してブロックする、を選べばOK。これでメール送信元にコメントともに通知されます。
特定のフローから送信したいものを許可するなら、例外条件で、ヘッダー文字列に特定のフローIDを含むものを許可すればよいでしょう。送信元メールアドレスでもよいですが、目的に応じて設定すればよいと思います。
もっと確実にするために
トランスポートルールでブロックる処理で差出人にメッセージを返信できますが、1行テキストしか入れられません。詳しいメッセージを送りたいなら、
- 先ほどの検知用メールボックスにとどいたらリストに書き込む処理のあとに
- 登録済みフローIDか否か判定し、
- 登録済みでない場合はメールを送信する
・・・という処理を使えばリッチなメッセージが送信できるようになりますね。
参考にしたもの
【Power Automate】メールから関数で文字列を抽出する方法!! - デジラボhttps://www.teijitaisya.com/powerautomate-substring/
Office 365 Outlook - Connectors | Microsoft Docs
https://docs.microsoft.com/ja-jp/connectors/office365/
コネクタのメール流出制御 - Power Platform | Microsoft Docs
https://docs.microsoft.com/ja-jp/power-platform/admin/block-forwarded-email-from-power-automate
0 件のコメント:
コメントを投稿