Morning Girl

Web API, Windows, C#, .NET, Dynamics 365/CRM etc..

【Azure】【SendGrid】【NLog】AzureのSendGridとNLogを組み合わせてエラーログをメールで飛ばしてみる

最近会社でAzureを組み合わせてなんちゃらかんちゃらとしています。

ただ、Web Appsとかでうんちゃかしているときに、ちょっと困ったのが、Log周り。

普段使い慣れているNLogを組み合わせて、もうちょっとクラウドライクに攻めらないかと思い、今回NLog+Azure SendGridで、Logメールの送信を実施してみました。

SendGridってなに?

簡単に言ってしまえばPaaSのメール送信(SMTPサーバ)サービスです。

SendGridは全世界で利用されているメール配信サービスです。 クラウドサービスのためアカウントを作成するだけで即日メールを 送信でき、面倒でコストのかかるメールサーバの構築は不要です。

もともとは独立したメールサービスだったかと思いますが、AzureのPaaSサービスとして組み込まれて提供されているのが、今回のポイントです。

今回はあくまでSMTPサーバとしての役割として利用していますが、メールマーケティングのツールとしても色々使えるみたいです。(その辺全然キャッチアップしていないので、よくわかってないですが、、、。)

SendGrid公式

https://sendgrid.kke.co.jp/

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を選択して

f:id:sugimomoto:20170211175332p:plain

必要情報を入力します。

パスワードだけ、このあとSMTPサーバにつなぐ際に利用しますので、ちゃんと覚えておきましょう。

f:id:sugimomoto:20170211175337p:plain

構成後、「すべての設定」→「Configurations」から接続する際に利用するUserNameとSMTP Server名が確認できますので、これと先程のパスワードを使って、NLogの設定を行います。

f:id:sugimomoto:20170211175341p:plain

NLogの設定

NLogを設定は単純にMail用Targetを記載するだけです。

細かな部分は割愛。

f:id:sugimomoto:20170211175348p:plain

とりあえず、Configのサンプルだけ記載しておきます。

SMTP専用なので、Fromアドレスとかはテキトーでも届きます。

今回のはあくまでログメール通知なのでno-replayなんちゃらでいいのではないかと思います。

こんな感じでメールが届きましたー。

f:id:sugimomoto:20170211175355p:plain

さて、個人的にはこれで、Dynamics CRMからメールを飛ばしたい。

サーバサイド連携が特定のSMTPサービスにしか対応していないので、E-mail Routerが一番簡単ですが、

PluginからSMTPリクエストを組んでアプローチするのもありかなと思ったり。

結構通知だけの需要ってあると思うので、うまく使っていきたい限りですね。