SendGrid を使用した Azure での電子メールの送信方法

概要

このガイドでは、Azure の SendGrid 電子メール サービスを使用して一般的なプログラム タスクを実行する方法を紹介します。 サンプルは C# で記述され、.NET Standard 1.3 をサポートしています。 紹介するシナリオは、電子メールの作成、電子メールの送信、添付ファイルの追加、さまざまな電子メールおよび追跡設定の有効化です。 SendGrid と電子メールの送信の詳細については、「次のステップ」を参照してください。

SendGrid 電子メール サービスとは

SendGrid は、信頼性の高いトランザクション メール配信、拡張性、およびリアルタイム分析の機能を備えたクラウドベースの電子メール サービスであり、柔軟な API を備えているためカスタム統合も容易です。 SendGrid の一般的な用途は次のとおりです。

  • 顧客に配信確認メッセージまたは購入確認を自動的に送信する。
  • 顧客に月 1 回広告メールを送信するための配布リストを管理する。
  • ブロックされた電子メールや顧客エンゲージメントなどを表すリアルタイムのメトリックを収集する。
  • 顧客の問い合わせを転送する。
  • 受信電子メールを処理する。

詳細については、https://sendgrid.com または SendGrid の C# ライブラリ GitHub リポジトリにアクセスしてください。

SendGrid アカウントの作成

Azure ユーザーは 1 か月あたり 25,000 通の電子メールを無料で利用できます。 毎月 25,000 通の無料電子メールにより、高度なレポートおよび分析と すべての API (Web、SMTP、イベント、解析など) を利用できるようになります。 SendGrid の提供するその他のサービスについては、SendGrid のソリューションに関するページにアクセスしてください。

SendGrid アカウントにサインアップするには

  1. Azure 管理ポータルにログインします。
  2. 左側のメニューで [新規] をクリックします。

    command-bar-new

  3. [アドオン][SendGrid Email Delivery (SendGrid 電子メール配信)] の順にクリックします。

    sendgrid-store

  4. サインアップ フォームに入力し、[作成] を選択します。

    sendgrid-create

  5. Azure 設定で SendGrid サービスを特定する名前を入力します。 名前は 1 ~ 100 文字にする必要があります。また、名前に含めることができるのは英数字、ダッシュ、ピリオド、およびアンダースコアのみです。 この名前は、Azure ストアのサブスクライブ項目の一覧で一意になっている必要があります。
  6. パスワードを入力し、確認します。
  7. サブスクリプションを選択します。
  8. 新しいリソース グループを作成するか、既存のリソース グループを使用します。
  9. [価格レベル] セクションで、サインアップする SendGrid プランを選択します。

    sendgrid-pricing

  10. 所有している場合は、プロモーション コードを入力します。
  11. 連絡先情報を入力します。
  12. 法律条項を確認し、同意します。
  13. 購入を確認すると、[デプロイメントに成功しました] ポップアップが表示され、[すべてのリソース] セクションにアカウントが表示されます。

    all-resources

    購入を完了して [管理] をクリックし、電子メール検証プロセスが始まると、SendGrid からアカウントの確認を求める電子メールが届きます。 この電子メールを受信していない場合やアカウントの検証に問題がある場合は、この FAQ を参照してください。

    manage

    アカウントが確認されるまでは、1 日に送信できる電子メールの数は最大 100 件です。

    サブスクリプション プランを変更するか、SendGrid 連絡先設定を表示するには、SendGrid サービスの名前をクリックし、SendGrid Marketplace ダッシュボードを開きます。

    [設定]

    SendGrid を使用して電子メールを送信するには、API キーを指定する必要があります。

SendGrid API キーを確認するには

  1. [管理]をクリックします。

    manage

  2. SendGrid のダッシュボードの左側のメニューで、[設定][API キー] の順に選択します。

    api-keys

  3. [API キーの作成] ドロップダウンをクリックして、[General API Key (一般的な API キー)] を選択します。

    general-api-key

  4. 少なくとも、このキーの名前を指定して電子メールの送信のフル アクセスを提供し、[保存] を選択します。

    access

  5. この時点で API が 1 回表示されます。 必ず安全に保管してください。

SendGrid の資格情報を確認するには

  1. キー アイコンをクリックして、自分のユーザー名を検索します。

    key

  2. パスワードは、セットアップ時に選択したものです。 変更するには、[パスワードの変更] または [パスワードのリセット] を選択します。

電子メール配信を管理するには、[管理] ボタンをクリックします。 これで、SendGrid のダッシュボードにリダイレクトされます。

![manage][manage]

For more information on sending email through SendGrid, visit the [Email API Overview][Email API Overview].

SendGrid .NET クラス ライブラリを参照する

SendGrid NuGet パッケージ は、SendGrid API を取得し、すべての依存関係を備えたアプリケーションを構成する最も簡単な方法です。 NuGet は Microsoft Visual Studio 2015 以降に含まれる Visual Studio 拡張機能であり、これを使用してライブラリおよびツールのインストールと更新を簡単に行うことができます。

注意

Visual Studio 2015 よりも前のバージョンの Visual Studio を利用している場合、NuGet をインストールするには、 http://www.nuget.orgにアクセスして、 [Install NuGet] ボタンをクリックしてください。

アプリケーションに SendGrid NuGet パッケージをインストールするには、次のステップを行います。

  1. [新しいプロジェクト] をクリックし、[テンプレート] を選択します。

    新しいプロジェクトを作成する

  2. [ソリューション エクスプローラー] で、[参照] を右クリックし、[NuGet パッケージの管理] をクリックします。

    SendGrid NuGet パッケージ

  3. SendGrid」を検索し、検索結果の一覧から SendGrid を選択します。
  4. バージョン ドロップダウンから NuGet パッケージの最新の安定バージョンを選択して、この記事で説明するオブジェクト モデルと API を操作できるようにします。

    SendGrid パッケージ

  5. [インストール] をクリックしてインストールを実行した後、このダイアログを閉じます。

SendGrid の .NET クラス ライブラリは、SendGrid という名前です。 これには次の名前空間が含まれます。

  • SendGrid、SendGrid の API との通信に使用します。
  • SendGrid.Helpers.Mail、電子メールの送信方法を指定する SendGridMessage オブジェクトをヘルパー メソッドで簡単に作成できます。

プログラムを使用して SendGrid 電子メール サービスにアクセスするすべての C# ファイルの冒頭部分に、名前空間を宣言する次のコードを追加します。

using SendGrid;
using SendGrid.Helpers.Mail

方法: 電子メールを作成する

SendGridMessage オブジェクトを使用して電子メール メッセージを作成します。 メッセージ オブジェクトを作成すると、電子メール送信者、電子メール受信者、電子メールの件名、本文などのプロパティやメソッドを設定することができます。

次の例に、すべての値が設定された電子メール オブジェクトの作成方法を示します。

var msg = new SendGridMessage();

msg.SetFrom(new EmailAddress("dx@example.com", "SendGrid DX Team"));

var recipients = new List<EmailAddress>
{
    new EmailAddress("jeff@example.com", "Jeff Smith"),
    new EmailAddress("anna@example.com", "Anna Lidman"),
    new EmailAddress("peter@example.com", "Peter Saddow")
};
msg.AddTos(recipients);

msg.SetSubject("Testing the SendGrid C# Library");

msg.AddContent(MimeType.Text, "Hello World plain text!");
msg.AddContent(MimeType.Html, "<p>Hello World!</p>");

SendGrid 型でサポートされるすべてのプロパティとメソッドの詳細については、GitHub の sendgrid-csharp に関するページを参照してください。

方法: 電子メールを送信する

電子メール メッセージを作成した後で、SendGrid の API を使用してメッセージを送信することができます。 または、.NET の組み込みライブラリを使用する方法もあります。

電子メールを送信するには、SendGrid API キーを指定する必要があります。 API キーを構成する方法の詳細については、SendGrid の API キーのドキュメントを参照してください。

これらの資格情報は、Azure Portal で [アプリケーションの設定] をクリックし、アプリケーションの設定にキーと値のペアを追加することによって保存できます。

Azure app settings

これらには、次のようにしてアクセスすることができます。

var apiKey = System.Environment.GetEnvironmentVariable("SENDGRID_APIKEY");
var client = new SendGridClient(apiKey);

次の例に、Web API でメッセージを送信する方法を示します。

using System;
using System.Threading.Tasks;
using SendGrid;
using SendGrid.Helpers.Mail;

namespace Example
{
    internal class Example
    {
        private static void Main()
        {
            Execute().Wait();
        }

        static async Task Execute()
        {
            var apiKey = System.Environment.GetEnvironmentVariable("SENDGRID_APIKEY");
            var client = new SendGridClient(apiKey);
            var msg = new SendGridMessage()
            {
                From = new EmailAddress("test@example.com", "DX Team"),
                Subject = "Hello World from the SendGrid CSharp SDK!",
                PlainTextContent = "Hello, Email!",
                HtmlContent = "<strong>Hello, Email!</strong>"
            };
            msg.AddTo(new EmailAddress("test@example.com", "Test User"));
            var response = await client.SendEmailAsync(msg);
        }
    }
}

方法: 添付ファイルを追加する

添付ファイルをメッセージに追加するには、AddAttachment メソッドを呼び出し、少なくとも添付するファイル名と Base64 でエンコードされた内容を指定します。 複数のファイルを添付するには、添付する各ファイルにつき 1 回このメソッドを呼び出すか、AddAttachments メソッドを使用します。 次の例に、メッセージに添付ファイルを追加する方法を示します。

var banner2 = new Attachment()
{
    Content = Convert.ToBase64String(raw_content),
    Type = "image/png",
    Filename = "banner2.png",
    Disposition = "inline",
    ContentId = "Banner 2"
};
msg.AddAttachment(banner2);

方法: 電子メール設定を使用してフッター、追跡、および分析を有効にする

SendGrid では、電子メール設定と追跡設定を使用することでその他の電子メール機能も利用することができます。 これらの設定を電子メール メッセージに追加することで、クリック追跡、Google 分析、サブスクリプション追跡などの特定の機能を有効にすることができます。 アプリの完全な一覧については、設定に関するドキュメントを参照してください。

アプリは、SendGridMessage クラスの一部として実装されたメソッドを使用する SendGrid 電子メール メッセージに適用できます。 次の例に、フッター フィルターとクリック追跡フィルターの使用方法を示します。

次の例に、フッター フィルターとクリック追跡フィルターの使用方法を示します。

フッターの設定

msg.SetFooterSetting(
                     true,
                     "Some Footer HTML",
                     "<strong>Some Footer Text</strong>");

クリック追跡

msg.SetClickTracking(true);

方法: その他の SendGrid サービスを使用する

SendGrid のいくつかの API と webhook を使用して、Azure アプリケーション内でその他の機能を利用することができます。 詳細については、SendGrid API のリファレンスを参照してください。

次のステップ

これで、SendGrid 電子メール サービスの基本を学習できました。さらに詳細な情報が必要な場合は、次のリンク先を参照してください。