【Azure】【SendGrid】【NLog】AzureのSendGridとNLogを組み合わせてエラーログをメールで飛ばしてみる
最近会社でAzureを組み合わせてなんちゃらかんちゃらとしています。
ただ、Web Appsとかでうんちゃかしているときに、ちょっと困ったのが、Log周り。
普段使い慣れているNLogを組み合わせて、もうちょっとクラウドライクに攻めらないかと思い、今回NLog+Azure SendGridで、Logメールの送信を実施してみました。
SendGridってなに?
簡単に言ってしまえばPaaSのメール送信(SMTPサーバ)サービスです。
SendGridは全世界で利用されているメール配信サービスです。 クラウドサービスのためアカウントを作成するだけで即日メールを 送信でき、面倒でコストのかかるメールサーバの構築は不要です。
もともとは独立したメールサービスだったかと思いますが、AzureのPaaSサービスとして組み込まれて提供されているのが、今回のポイントです。
今回はあくまでSMTPサーバとしての役割として利用していますが、メールマーケティングのツールとしても色々使えるみたいです。(その辺全然キャッチアップしていないので、よくわかってないですが、、、。)
SendGrid公式
Microsoft AzureからのSendGridの利用方法
https://sendgrid.kke.co.jp/blog/?p=2621
SendGrid を使用した Azure での電子メールの送信方法
https://docs.microsoft.com/ja-jp/azure/app-service-web/sendgrid-dotnet-how-to-send-email
SendGridの構成
ただ、SendGridでメールを飛ばしたいだけなら、特に小難しいことはありません。
AzureのMarketplaceから取得して、設定すれば、Username・Password・SmtpServerNameが手に入るので、それを使ってSMTPリクエストを実施するだけです。
しかも、一番下のプランが月のメール送信上限がありつつもFreeなので試すにはありがたい限り。
では、簡単ですが構成手順です。
AzureのMarketplaceからSendGrid Email Deliveryを選択して
必要情報を入力します。
パスワードだけ、このあとSMTPサーバにつなぐ際に利用しますので、ちゃんと覚えておきましょう。
構成後、「すべての設定」→「Configurations」から接続する際に利用するUserNameとSMTP Server名が確認できますので、これと先程のパスワードを使って、NLogの設定を行います。
NLogの設定
NLogを設定は単純にMail用Targetを記載するだけです。
細かな部分は割愛。
とりあえず、Configのサンプルだけ記載しておきます。
SMTP専用なので、Fromアドレスとかはテキトーでも届きます。
今回のはあくまでログメール通知なのでno-replayなんちゃらでいいのではないかと思います。
こんな感じでメールが届きましたー。
さて、個人的にはこれで、Dynamics CRMからメールを飛ばしたい。
サーバサイド連携が特定のSMTPサービスにしか対応していないので、E-mail Routerが一番簡単ですが、
PluginからSMTPリクエストを組んでアプローチするのもありかなと思ったり。
結構通知だけの需要ってあると思うので、うまく使っていきたい限りですね。