はじめに
運用で利用するスクリプトに確認結果をメール通知する処理を書いている際に、「JSON を投げつけたらメールが飛んでくれる何かがあったら超便利なのになぁ」と閃きました。メールを送るためのライブラリを探したり、メールを送る処理の書き方を Google に聞いたりするのがめんどくさかったが故の閃きです。
いろいろ考えた結果、Loggic Apps を使って実装できることが分かったので作ってみました。
全体像
小難しいことはしません。WebHook トリガで JSON を受け取って、受け取った内容を SMTP アクションでメールサーバに渡します。
WebHook トリガの実装
件名と本文、送信元アドレス、宛先アドレスを含む JSON を受け取れるようにします。
HTTP POST URL
に記載されている URL が、JSON を投げつける先です。Request Body JSON Schema
は次のようになります。
{
"properties": {
"from": {
"type": "string"
},
"msg": {
"type": "string"
},
"subject": {
"type": "string"
},
"to": {
"type": "string"
}
},
"type": "object"
}
SNMP アクションの実装
まずは利用するメールサーバを SMTP アクションに追加します。今回は SendGrid の SMTP サーバを利用します。
そして、SNMP アクションの各項目に、WebHook トリガが受け取った内容を当てはめていきます。
動作確認
WebHook トリガ の FQDN に対して、Request Body JSON Schema
のJSON を投げつけます。次の PowerShell を実行すると、JSON の to に入っているメールアドレスにメールが届きます。簡単。
$food = "ごはん"
$msg = @"
ご担当者様
$food を食べませんか。
以上
"@
$body = ConvertTo-Json(@{
msg = $msg
subject = "sub"
to = "kongou_ae@aimless.jp;kongou_ae2@aimless.jp"
from = "logicapps@aimless.jp"
})
$url = "https://prod-07.japaneast.logic.azure.com:443/workflows/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/triggers/manual/paths/invoke?api-version=2016-10-01&sp=%2Ftriggers%2Fmanual%2Frun&sv=1.0&sig=xxxxxxxxxxxxxxxxxxxxxxx"
Invoke-RestMethod -Method POST -Uri $url -Body $body -ContentType "application/json;charset=utf-8"