目次
アカウントの作成
無料枠を使いたい場合は、SendGridのサイトからアカウントを作成する必要がある。 2021年1月時点*1で、Azure Marketplace から作ろうとした場合に無料プランは選択できなくなっている。 どちらから作るかによって選べるプランが違うようなので、比較した上で目的にあったプランを選択する。
また、SendGrid は sendgrid.com を元にリセラーパートナーがあり、それぞれ別の契約になっている様子。 sendgrid.com、構造計画研究所(sendgrid.kke.co.jp)、Azure Marketplace などそれぞれ別のアカウント、契約&サポートになるようなので注意が必要。
Azure Marketplace で SendGrid のアカウント作成する場合、1つのサブスクリプションにつき1つしか作れない。*2
Azure のサービスから「SendGrid」で検索して、SendGrid Accounts を開いて「作成」からアカウントを作成する。
Azure 上から作成する場合は、 Bronze が一番下のプラン。
こちらの記事を参考にすると、SendGrid の昔の料金体系のまま、上位のプランが増えた感じ。
Azure を使わず sendgrid.com からアカウントを作成する場合はこちらも参考に。
SendGrid のセットアップ
作成したリソースの概要から Manage を選択して、sendgrid.com のページを開く。
Single Sender (差出人) の登録かドメインの認証が必要になる。
【重要】APIキー認証および二要素認証が必須に変更されます – サポート
今回は Single Sender を選択した。
作成したらメールが飛んでくるので verify する。
Single Sender は、Settings > Sender Authentication で管理される。
「Verify a Single Sender」で作成したり編集したりできる。
API Key の作成
Settings の API Keys からキーを作成することができる。
権限は必要に合わせて調整する。送信するには [Mail Send] が必要。
作成するとキーが表示されるのでコピーしておく。
実装
NuGet で Sendgrid をインストールする。
Single Sender 認証を行った場合、From のメールアドレスが認証に使用したメールアドレスと一致していないと Forbidden のステータスコードが返ってくるので注意。
シンプルなシナリオでは以下の通り。
var apiKey = "API KEY"; var client = new SendGridClient(apiKey); var from = new EmailAddress("登録した送信者のメールアドレス@example.com", "fromの名前"); var subject = "SendGridを使ったメール送信"; var to = new EmailAddress("to@example.com", "toの名前"); var plainTextContent = "テキストの内容です。"; var htmlContent = "<strong>HTMLの内容です。</strong>"; var msg = MailHelper.CreateSingleEmail(from, to, subject, plainTextContent, htmlContent); var response = await client.SendEmailAsync(msg).ConfigureAwait(false); Console.WriteLine(response.StatusCode.ToString());
複数の宛先に送信する場合は CreateSingleEmailToMultipleRecipients()
を使用する。
var tos = new List<EmailAddress> { new EmailAddress("to1@example.comt"), new EmailAddress("to2@example.com"), }; var msg = MailHelper.CreateSingleEmailToMultipleRecipients(from, tos, subject, plainTextContent, htmlContent);
リポジトリには設定ファイルから読み込む、.NET Core のサンプルと.NET Frameworkのサンプルもあるので参考になる。