tekitoumemo’s diary

C#、.NET系の技術ブログを書いています。みんなの洋楽ランキングを運営しています。

AzureでSendGridを扱う

https://sendgrid.kke.co.jp/blog/wp/wp-content/uploads/2016/09/SG_Logo_Blog.jpg

SendGridイイね!

Azure App Service on Linuxに移行する為にテストをしていたところ、メール送信に失敗するようになりました( ゚д゚)
tekitoumemo.hatenablog.com
色々調べてみるとAzureではメール送信を推奨していないことがわかりました。
Azure 上にメールサーバー/SMTP サーバーを構築する場合の注意事項 – Japan Azure IaaS Support Blog

Azure 上の VM から、外部ドメインに対して直接 SMTP 等を使ってメール送信することは、Azure プラットフォームとしてサポートをしておりません。

メールが失敗する原因がAzureのせいじゃないとは思うのですが、原因特定に力を使っても意味がないのでこの際Slackやらに通知する方法を考えていたのですが、「SendGrid使ってみたい!」と思ったのでSendGridにしました。stackoverflowに質問投げたのですが、ビビるほど音沙汰がないので知ってる人いたら教えて欲しいです(TLSで弾かれてるとこまではわかった)。
ja.stackoverflow.com

ということでAzureで動くまで説明します。

AzureでSendGridアカウントを作成する

SendGrid Accountsの[追加]を押下してアカウントを作成します。Resource Groupまで適当に入れてください。
f:id:tekitoumemo:20181017000439p:plain
pricing tierをクリックするとプランが出てきます。25000通まで無料(安杉)なのでFreeを選びました。
f:id:tekitoumemo:20181017000706p:plain
Contact Informationには、名前やら自分の情報を入れてください。
f:id:tekitoumemo:20181017000821p:plain
法律条例は[作成]を押下すると同意したことになるので同意しましょう。
f:id:tekitoumemo:20181017001005p:plain

SendGrid管理画面でAPIキーを発行

デプロイが完了したらリソースに移動して[Manage]を押下するとSendGridの管理画面に遷移します。
f:id:tekitoumemo:20181017001342p:plain
管理画面に移動したらメニューのSettingsを押下してApiKeyをクリックします。
f:id:tekitoumemo:20181017001504p:plain
Create API Keyを押下して、権限やらを設定します。発行したAPI Keyは一度しか見れないので厳重に保管しておいてください。
f:id:tekitoumemo:20181017001628p:plain

コード

C#用のSendGridライブラリがあるのでNugetから取ってきます。

dotnet add package Sendgrid --version 9.10.0

www.nuget.org

コードは以下です。

var apiKey = "{発行したAPI Key}";
var client = new SendGridClient (apiKey);
var msg = new SendGridMessage () {
    From = new EmailAddress ("{メールアドレス}"),
    Subject = "Hello World from the SendGrid CSharp SDK!",
    PlainTextContent = "Hello, Email!",
    HtmlContent = "<strong>Hello, Email!</strong>"
};
msg.AddTo (new EmailAddress ("{メールアドレス}"));
var response = await client.SendEmailAsync (msg);

response.StatusCodeで送信出来たか確認できます。

あとは管理画面でメールが送信されたか確認出来ます。

感想

SendGridは知ってましたが、一休のブログとか見てると大規模サービスに使われるクラウドぐらいの感覚でしかなかったのですが
25000通まで無料なので気軽にいじれてよかったです。
user-first.ikyu.co.jp
日本語の情報が多く、値段も手頃なのでかなり気に入りました。
f:id:tekitoumemo:20181017003657p:plain