SendGrid を使用した Azure での電子メールの送信方法How to Send Email Using SendGrid with Azure

概要Overview

このガイドでは、Azure の SendGrid 電子メール サービスを使用して一般的なプログラム タスクを実行する方法を紹介します。This guide demonstrates how to perform common programming tasks with the SendGrid email service on Azure. サンプルは C# で記述され、.NET Standard 1.3 をサポートしています。The samples are written in C# and supports .NET Standard 1.3. 紹介するシナリオは、電子メールの作成、電子メールの送信、添付ファイルの追加、さまざまな電子メールおよび追跡設定の有効化です。The scenarios covered include constructing email, sending email, adding attachments, and enabling various mail and tracking settings. SendGrid と電子メールの送信の詳細については、「次のステップ」を参照してください。For more information on SendGrid and sending email, see the Next steps section.

SendGrid 電子メール サービスとはWhat is the SendGrid Email Service?

SendGrid は、信頼性の高いトランザクション メール配信、拡張性、およびリアルタイム分析の機能を備えたクラウドベースの電子メール サービスであり、柔軟な API を備えているためカスタム統合も容易です。SendGrid is a cloud-based email service that provides reliable transactional email delivery, scalability, and real-time analytics along with flexible APIs that make custom integration easy. SendGrid の一般的な用途は次のとおりです。Common SendGrid use cases include:

  • 顧客に配信確認メッセージまたは購入確認を自動的に送信する。Automatically sending receipts or purchase confirmations to customers.
  • 顧客に月 1 回広告メールを送信するための配布リストを管理する。Administering distribution lists for sending customers monthly fliers and promotions.
  • ブロックされた電子メールや顧客エンゲージメントなどを表すリアルタイムのメトリックを収集する。Collecting real-time metrics for things like blocked email and customer engagement.
  • 顧客の問い合わせを転送する。Forwarding customer inquiries.
  • 受信電子メールを処理する。Processing incoming emails.

詳細については、https://sendgrid.com または SendGrid の C# ライブラリ GitHub リポジトリにアクセスしてください。For more information, visit https://sendgrid.com or SendGrid's C# library GitHub repo.

SendGrid アカウントの作成Create a SendGrid Account

Azure ユーザーは 1 か月あたり 25,000 通の電子メールを無料で利用できます。Azure customers can unlock 25,000 free emails each month. 毎月 25,000 通の無料電子メールにより、高度なレポートおよび分析と すべての API (Web、SMTP、イベント、解析など) を利用できるようになります。These 25,000 free monthly emails will give you access to advanced reporting and analytics and all APIs (Web, SMTP, Event, Parse and more). SendGrid の提供するその他のサービスについては、SendGrid のソリューションに関するページにアクセスしてください。For information about additional services provided by SendGrid, visit the SendGrid Solutions page.

SendGrid アカウントにサインアップするにはTo sign up for a SendGrid account

  1. Azure Portal にサインインします。Sign in to the Azure portal.
  2. 左側のメニューで、[リソースの作成] をクリックします。In the menu on the left, click Create a resource.

    command-bar-new

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

    sendgrid-store

  4. サインアップ フォームに入力し、[作成] を選択します。Complete the signup form and select Create.

    sendgrid-create

  5. Azure 設定で SendGrid サービスを特定する名前を入力します。Enter a Name to identify your SendGrid service in your Azure settings. 名前は 1 ~ 100 文字にする必要があります。また、名前に含めることができるのは英数字、ダッシュ、ピリオド、およびアンダースコアのみです。Names must be between 1 and 100 characters in length and contain only alphanumeric characters, dashes, dots, and underscores. この名前は、Azure ストアのサブスクライブ項目の一覧で一意になっている必要があります。The name must be unique in your list of subscribed Azure Store Items.
  6. パスワードを入力し、確認します。Enter and confirm your Password.
  7. サブスクリプションを選択します。Choose your Subscription.
  8. 新しいリソース グループを作成するか、既存のリソース グループを使用します。Create a new Resource group or use an existing one.
  9. [価格レベル] セクションで、サインアップする SendGrid プランを選択します。In the Pricing tier section select the SendGrid plan you want to sign up for.

    sendgrid-pricing

  10. 所有している場合は、プロモーション コードを入力します。Enter a Promotion Code if you have one.
  11. 連絡先情報を入力します。Enter your Contact Information.
  12. 法律条項を確認し、同意します。Review and accept the Legal terms.
  13. 購入を確認すると、[デプロイメントに成功しました] ポップアップが表示され、[すべてのリソース] セクションにアカウントが表示されます。After confirming your purchase you will see a Deployment Succeeded pop-up and you will see your account listed in the All resources section.

    all-resources

    購入を完了して [管理] をクリックし、電子メール検証プロセスが始まると、SendGrid からアカウントの確認を求める電子メールが届きます。After you have completed your purchase and clicked the Manage button to initiate the email verification process, you will receive an email from SendGrid asking you to verify your account. この電子メールを受信していない場合やアカウントの検証に問題がある場合は、この FAQ を参照してください。If you do not receive this email, or have problems verifying your account, please see this FAQ.

    manage

    アカウントが確認されるまでは、1 日に送信できる電子メールの数は最大 100 件です。You can only send up to 100 emails/day until you have verified your account.

    サブスクリプション プランを変更するか、SendGrid 連絡先設定を表示するには、SendGrid サービスの名前をクリックし、SendGrid Marketplace ダッシュボードを開きます。To modify your subscription plan or see the SendGrid contact settings, click the name of your SendGrid service to open the SendGrid Marketplace dashboard.

    設定

    SendGrid を使用して電子メールを送信するには、API キーを指定する必要があります。To send an email using SendGrid, you must supply your API Key.

SendGrid API キーを確認するにはTo find your SendGrid API Key

  1. Manageをクリックします。Click Manage.

    manage

  2. SendGrid のダッシュボードの左側のメニューで、[設定][API キー] の順に選択します。In your SendGrid dashboard, select Settings and then API Keys in the menu on the left.

    api-keys

  3. [API キーの作成] をクリックします。Click the Create API Key.

    general-api-key

  4. 少なくとも、このキーの名前を指定して電子メールの送信のフル アクセスを提供し、[保存] を選択します。At a minimum, provide the Name of this key and provide full access to Mail Send and select Save.

    access

  5. この時点で API が 1 回表示されます。Your API will be displayed at this point one time. 必ず安全に保管してください。Please be sure to store it safely.

SendGrid の資格情報を確認するにはTo find your SendGrid credentials

  1. キー アイコンをクリックして、自分のユーザー名を検索します。Click the key icon to find your Username.

    key

  2. パスワードは、セットアップ時に選択したものです。The password is the one you chose at setup. 変更するには、[パスワードの変更] または [パスワードのリセット] を選択します。You can select Change password or Reset password to make any changes.

電子メール配信を管理するには、管理 ボタンをクリックします。To manage your email deliverability settings, click the Manage button. これで、SendGrid のダッシュボードにリダイレクトされます。This will redirect to your SendGrid dashboard.

manage

SendGrid 経由での電子メールの送信の詳細については、電子メール API の概要に関するページを参照してください。For more information on sending email through SendGrid, visit the Email API Overview.

SendGrid .NET クラス ライブラリを参照するReference the SendGrid .NET Class Library

SendGrid NuGet パッケージ は、SendGrid API を取得し、すべての依存関係を備えたアプリケーションを構成する最も簡単な方法です。The SendGrid NuGet package is the easiest way to get the SendGrid API and to configure your application with all dependencies. NuGet は Microsoft Visual Studio 2015 以降に含まれる Visual Studio 拡張機能であり、これを使用してライブラリおよびツールのインストールと更新を簡単に行うことができます。NuGet is a Visual Studio extension included with Microsoft Visual Studio 2015 and above that makes it easy to install and update libraries and tools.

注意

Visual Studio 2015 よりも前のバージョンの Visual Studio を利用している場合、NuGet をインストールするには、http://www.nuget.orgにアクセスして、[Install NuGet] をクリックしてください。To install NuGet if you are running a version of Visual Studio earlier than Visual Studio 2015, visit http://www.nuget.org, and click the Install NuGet button.

アプリケーションに SendGrid NuGet パッケージをインストールするには、次のステップを行います。To install the SendGrid NuGet package in your application, do the following:

  1. [新しいプロジェクト] をクリックし、[テンプレート] を選択します。Click on New Project and select a Template.

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

  2. [ソリューション エクスプローラー] で、[参照] を右クリックし、[NuGet パッケージの管理] をクリックします。In Solution Explorer, right-click References, then click Manage NuGet Packages.

    SendGrid NuGet パッケージ

  3. SendGrid」を検索し、検索結果の一覧から SendGrid を選択します。Search for SendGrid and select the SendGrid item in the results list.
  4. バージョン ドロップダウンから NuGet パッケージの最新の安定バージョンを選択して、この記事で説明するオブジェクト モデルと API を操作できるようにします。Select the latest stable version of the Nuget package from the version dropdown to be able to work with the object model and APIs demonstrated in this article.

    SendGrid パッケージ

  5. [インストール] をクリックしてインストールを実行した後、このダイアログを閉じます。Click Install to complete the installation, and then close this dialog.

SendGrid の .NET クラス ライブラリは、SendGrid という名前です。SendGrid's .NET class library is called SendGrid. これには次の名前空間が含まれます。It contains the following namespaces:

  • SendGrid、SendGrid の API との通信に使用します。SendGrid for communicating with SendGrid’s API.
  • SendGrid.Helpers.Mail、電子メールの送信方法を指定する SendGridMessage オブジェクトをヘルパー メソッドで簡単に作成できます。SendGrid.Helpers.Mail for helper methods to easily create SendGridMessage objects that specify how to send emails.

プログラムを使用して SendGrid 電子メール サービスにアクセスするすべての C# ファイルの冒頭部分に、名前空間を宣言する次のコードを追加します。Add the following code namespace declarations to the top of any C# file in which you want to programmatically access the SendGrid email service.

using SendGrid;
using SendGrid.Helpers.Mail;

方法: 電子メールを作成するHow to: Create an Email

SendGridMessage オブジェクトを使用して電子メール メッセージを作成します。Use the SendGridMessage object to create an email message. メッセージ オブジェクトを作成すると、電子メール送信者、電子メール受信者、電子メールの件名、本文などのプロパティやメソッドを設定することができます。Once the message object is created, you can set properties and methods, including the email sender, the email recipient, and the subject and body of the email.

次の例に、すべての値が設定された電子メール オブジェクトの作成方法を示します。The following example demonstrates how to create a fully populated email object:

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 に関するページを参照してください。For more information on all properties and methods supported by the SendGrid type, see sendgrid-csharp on GitHub.

方法: 電子メールを送信するHow to: Send an Email

電子メール メッセージを作成した後で、SendGrid の API を使用してメッセージを送信することができます。After creating an email message, you can send it using SendGrid's API. または、.NET の組み込みライブラリを使用する方法もあります。Alternatively, you may use .NET's built in library.

電子メールを送信するには、SendGrid API キーを指定する必要があります。Sending email requires that you supply your SendGrid API Key. API キーを構成する方法の詳細については、SendGrid の API キーのドキュメントを参照してください。If you need details about how to configure API Keys, please visit SendGrid's API Keys documentation.

これらの資格情報は、Azure Portal で [アプリケーションの設定] をクリックし、アプリケーションの設定にキーと値のペアを追加することによって保存できます。You may store these credentials via your Azure Portal by clicking Application settings and adding the key/value pairs under App settings.

Azure app settings

これらには、次のようにしてアクセスすることができます。Then, you may access them as follows:

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

次の例は、コンソール アプリケーションで SendGrid Web API を使用して電子メール メッセージを送信する方法を示しています。The following examples show how to send an email message using the SendGrid Web API with a console application.

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);
        }
    }
}

方法: MailHelper クラスを使用して ASP .NET Core API から電子メールを送信するHow to: Send email from ASP .NET Core API using MailHelper class

以下の例は、SendGrid.Helpers.Mail 名前空間の MailHelper クラスを使用して、ASP .NET Core API から複数の受信者に単一の電子メールを送信する際に使用できます。The below example can be used to send a single email to multiple persons from the ASP .NET Core API using the MailHelper class of SendGrid.Helpers.Mail namespace. この例では、ASP .NET Core 1.0 を使用しています。For this example we are using ASP .NET Core 1.0.

この例では、API キーは appsettings.json ファイルに格納済みです。このファイルは、以下の例に示すように、Azure Portal からオーバーライドできます。In this example, the API key has been stored in the appsettings.json file which can be overridden from the Azure portal as shown in the above examples.

appsettings.json ファイルのコンテンツは、次のようになっています。The contents of appsettings.json file should look similar to:

{
   "Logging": {
   "IncludeScopes": false,
   "LogLevel": {
   "Default": "Debug",
   "System": "Information",
   "Microsoft": "Information"
     }
   },
 "SENDGRID_API_KEY": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
}

最初に、.NET Core API プロジェクトの Startup.cs ファイルに、以下のコードを追加する必要があります。First, we need to add the below code in the Startup.cs file of the .NET Core API project. API コントローラーの依存関係の挿入を使用して、appsettings.json ファイルから SENDGRID_API_KEY にアクセスできるように、この作業が必要になります。This is required so that we can access the SENDGRID_API_KEY from the appsettings.json file by using dependency injection in the API controller. IConfiguration インターフェイスは、以下の ConfigureServices メソッドに追加した後、コントローラーのコンストラクターで挿入できます。The IConfiguration interface can be injected at the constructor of the controller after adding it in the ConfigureServices method below. Startup.cs ファイルのコンテンツは、必要なコードを追加した後は次のようになります。The content of Startup.cs file looks like the following after adding the required code:

    public IConfigurationRoot Configuration { get; }

    public void ConfigureServices(IServiceCollection services)
    {
        // Add mvc here
        services.AddMvc();
        services.AddSingleton<IConfiguration>(Configuration);
    }

コントローラーでは、IConfiguration インターフェイスを挿入した後、MailHelper クラスの CreateSingleEmailToMultipleRecipients メソッドを使用して、単一の電子メールを複数の受信者に送信することができます。At the controller, after injecting the IConfiguration interface, we can use the CreateSingleEmailToMultipleRecipients method of the MailHelper class to send a single email to multiple recipients. メソッドでは、showAllRecipients という追加のブール型パラメーターを 1 つ受け取ります。The method accepts one additional boolean parameter named showAllRecipients. このパラメーターは、電子メールの受信者が電子メール ヘッダーの「宛先」セクションで互いの電子メール アドレスを確認できるかどうかを制御するために使用できます。This parameter can be used to control whether email recipients will be able to see each others email address in the To section of email header. コントローラーのサンプル コードは、次のようになります。The sample code for controller should be like below

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;
using SendGrid;
using SendGrid.Helpers.Mail;
using Microsoft.Extensions.Configuration;

namespace SendgridMailApp.Controllers
{
    [Route("api/[controller]")]
    public class NotificationController : Controller
    {
       private readonly IConfiguration _configuration;

       public NotificationController(IConfiguration configuration)
       {
         _configuration = configuration;
       }      

       [Route("SendNotification")]
       public async Task PostMessage()
       {
          var apiKey = _configuration.GetSection("SENDGRID_API_KEY").Value;
          var client = new SendGridClient(apiKey);
          var from = new EmailAddress("test1@example.com", "Example User 1");
          List<EmailAddress> tos = new List<EmailAddress>
          {
              new EmailAddress("test2@example.com", "Example User 2"),
              new EmailAddress("test3@example.com", "Example User 3"),
              new EmailAddress("test4@example.com","Example User 4")
          };

          var subject = "Hello world email from Sendgrid ";
          var htmlContent = "<strong>Hello world with HTML content</strong>";
          var displayRecipients = false; // set this to true if you want recipients to see each others mail id 
          var msg = MailHelper.CreateSingleEmailToMultipleRecipients(from, tos, subject, "", htmlContent, false);
          var response = await client.SendEmailAsync(msg);
      }
   }
}

方法: 添付ファイルを追加するHow to: Add an attachment

添付ファイルをメッセージに追加するには、AddAttachment メソッドを呼び出し、少なくとも添付するファイル名と Base64 でエンコードされた内容を指定します。Attachments can be added to a message by calling the AddAttachment method and minimally specifying the file name and Base64 encoded content you want to attach. 複数のファイルを添付するには、添付する各ファイルにつき 1 回このメソッドを呼び出すか、AddAttachments メソッドを使用します。You can include multiple attachments by calling this method once for each file you wish to attach or by using the AddAttachments method. 次の例に、メッセージに添付ファイルを追加する方法を示します。The following example demonstrates adding an attachment to a message:

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

方法: 電子メール設定を使用してフッター、追跡、および分析を有効にするHow to: Use mail settings to enable footers, tracking, and analytics

SendGrid では、電子メール設定と追跡設定を使用することでその他の電子メール機能も利用することができます。SendGrid provides additional email functionality through the use of mail settings and tracking settings. これらの設定を電子メール メッセージに追加することで、クリック追跡、Google 分析、サブスクリプション追跡などの特定の機能を有効にすることができます。These settings can be added to an email message to enable specific functionality such as click tracking, Google analytics, subscription tracking, and so on. アプリの完全な一覧については、設定に関するドキュメントを参照してください。For a full list of apps, see the Settings Documentation.

アプリは、SendGridMessage クラスの一部として実装されたメソッドを使用する SendGrid 電子メール メッセージに適用できます。Apps can be applied to SendGrid email messages using methods implemented as part of the SendGridMessage class. 次の例に、フッター フィルターとクリック追跡フィルターの使用方法を示します。The following examples demonstrate the footer and click tracking filters:

次の例に、フッター フィルターとクリック追跡フィルターの使用方法を示します。The following examples demonstrate the footer and click tracking filters:

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

クリック追跡Click tracking

msg.SetClickTracking(true);

方法: その他の SendGrid サービスを使用するHow to: Use Additional SendGrid Services

SendGrid のいくつかの API と webhook を使用して、Azure アプリケーション内でその他の機能を利用することができます。SendGrid offers several APIs and webhooks that you can use to leverage additional functionality within your Azure application. 詳細については、SendGrid API のリファレンスを参照してください。For more details, see the SendGrid API Reference.

次の手順Next steps

これで、SendGrid 電子メール サービスの基本を学習できました。さらに詳細な情報が必要な場合は、次のリンク先を参照してください。Now that you've learned the basics of the SendGrid Email service, follow these links to learn more.