Azure Functions における SendGrid のバインディングAzure Functions SendGrid bindings

この記事では、Azure Functions で SendGrid のバインディングを使用して電子メールを送信する方法について説明します。This article explains how to send email by using SendGrid bindings in Azure Functions. Azure Functions では、SendGrid 用の出力バインディングがサポートされています。Azure Functions supports an output binding for SendGrid.

これは、Azure Functions の開発者向けリファレンス情報です。This is reference information for Azure Functions developers. Azure Functions を初めて使用する場合は、先に次のリソースを参照してください。If you're new to Azure Functions, start with the following resources:

パッケージ - Functions 1.xPackages - Functions 1.x

SendGrid バインディングは Microsoft.Azure.WebJobs.Extensions.SendGrid NuGet パッケージ、バージョン 2.x で提供されます。The SendGrid bindings are provided in the Microsoft.Azure.WebJobs.Extensions.SendGrid NuGet package, version 2.x. パッケージのソース コードは、azure-webjobs-sdk-extensions GitHub リポジトリにあります。Source code for the package is in the azure-webjobs-sdk-extensions GitHub repository.

次の表に、各開発環境でこのバインディングのサポートを追加する方法を示します。The following table tells how to add support for this binding in each development environment.

開発環境Development environment サポートを追加するバージョン:To add support in
Functions 1.xFunctions 1.x
ローカル開発 - C# クラス ライブラリLocal development - C# class library パッケージをインストールするInstall the package
ローカル開発で - C# スクリプト、JavaScript、F#Local development - C# script, JavaScript, F# 自動Automatic
Portal 開発Portal development 自動Automatic

パッケージ - Functions 2.x 以降Packages - Functions 2.x and higher

SendGrid バインディングは Microsoft.Azure.WebJobs.Extensions.SendGrid NuGet パッケージ、バージョン 3.x で提供されます。The SendGrid bindings are provided in the Microsoft.Azure.WebJobs.Extensions.SendGrid NuGet package, version 3.x. パッケージのソース コードは、azure-webjobs-sdk-extensions GitHub リポジトリにあります。Source code for the package is in the azure-webjobs-sdk-extensions GitHub repository.

次の方法を使用して、推奨される開発環境にサポートを追加します。Add support in you preferred development environment using the following methods.

開発環境Development environment アプリケーションの種類Application type サポートを追加するにはTo add support
Visual StudioVisual Studio C# クラス ライブラリC# class library NuGet パッケージをインストールするInstall the NuGet package
Visual Studio CodeVisual Studio Code コアツールに基づくBased on core tools 拡張機能バンドルを登録するRegister the extension bundle

Azure Tools 拡張機能 をインストールすることをお勧めします。Installing the Azure Tools extension is recommended.
その他のエディター/IDEAny other editor/IDE コアツールに基づくBased on core tools 拡張機能バンドルを登録するRegister the extension bundle
Azure portalAzure Portal ポータルでのみオンラインOnline only in portal バインドを追加するときにインストールするInstalls when adding a binding

関数アプリを再発行せずに、既存のバインディング拡張機能を更新するには、拡張機能の更新に関するページを参照してください。See Update your extensions to update existing binding extensions without having to republish your function app.

Example

次の例は、Service Bus キュー トリガーと SendGrid 出力バインディングを使用する C# 関数を示しています。The following example shows a C# function that uses a Service Bus queue trigger and a SendGrid output binding.

同期Synchronous

using SendGrid.Helpers.Mail;

...

[FunctionName("SendEmail")]
public static void Run(
    [ServiceBusTrigger("myqueue", Connection = "ServiceBusConnection")] Message email,
    [SendGrid(ApiKey = "CustomSendGridKeyAppSettingName")] out SendGridMessage message)
{
var emailObject = JsonConvert.DeserializeObject<OutgoingEmail>(Encoding.UTF8.GetString(email.Body));

message = new SendGridMessage();
message.AddTo(emailObject.To);
message.AddContent("text/html", emailObject.Body);
message.SetFrom(new EmailAddress(emailObject.From));
message.SetSubject(emailObject.Subject);
}

public class OutgoingEmail
{
    public string To { get; set; }
    public string From { get; set; }
    public string Subject { get; set; }
    public string Body { get; set; }
}

非同期Asynchronous

using SendGrid.Helpers.Mail;

...

[FunctionName("SendEmail")]
public static async void Run(
 [ServiceBusTrigger("myqueue", Connection = "ServiceBusConnection")] Message email,
 [SendGrid(ApiKey = "CustomSendGridKeyAppSettingName")] IAsyncCollector<SendGridMessage> messageCollector)
{
 var emailObject = JsonConvert.DeserializeObject<OutgoingEmail>(Encoding.UTF8.GetString(email.Body));

 var message = new SendGridMessage();
 message.AddTo(emailObject.To);
 message.AddContent("text/html", emailObject.Body);
 message.SetFrom(new EmailAddress(emailObject.From));
 message.SetSubject(emailObject.Subject);
 
 await messageCollector.AddAsync(message);
}

public class OutgoingEmail
{
 public string To { get; set; }
 public string From { get; set; }
 public string Subject { get; set; }
 public string Body { get; set; }
}

"AzureWebJobsSendGridApiKey" という名前のアプリ設定に API キーがある場合は、属性の ApiKey プロパティの設定を省略できます。You can omit setting the attribute's ApiKey property if you have your API key in an app setting named "AzureWebJobsSendGridApiKey".

属性と注釈Attributes and annotations

C# クラス ライブラリでは、SendGrid 属性を使用します。In C# class libraries, use the SendGrid attribute.

構成可能な属性プロパティについては、構成を参照してください。For information about attribute properties that you can configure, see Configuration. メソッド シグネチャでの SendGrid 属性の例を次に示します。Here's a SendGrid attribute example in a method signature:

[FunctionName("SendEmail")]
public static void Run(
    [ServiceBusTrigger("myqueue", Connection = "ServiceBusConnection")] OutgoingEmail email,
    [SendGrid(ApiKey = "CustomSendGridKeyAppSettingName")] out SendGridMessage message)
{
    ...
}

完全な例については、「C# の例」を参照してください。For a complete example, see C# example.

構成Configuration

次の表は、function.json ファイルと SendGrid 属性/注釈で使用できるバインド構成のプロパティの一覧を示しています。The following table lists the binding configuration properties available in the function.json file and the SendGrid attribute/annotation.

function.json のプロパティfunction.json property 属性/注釈のプロパティAttribute/annotation property 説明Description 省略可能Optional
typetype 該当なしn/a sendGrid に設定する必要があります。Must be set to sendGrid. いいえNo
directiondirection 該当なしn/a out に設定する必要があります。Must be set to out. いいえNo
namename 該当なしn/a 要求または要求本文の関数コードで使用される変数名。The variable name used in function code for the request or request body. 戻り値が 1 つの場合、この値は $return です。This value is $return when there is only one return value. いいえNo
apiKeyapiKey ApiKeyApiKey API キーを含むアプリ設定の名前。The name of an app setting that contains your API key. 設定されていない場合、既定のアプリの設定名は AzureWebJobsSendGridApiKey です。If not set, the default app setting name is AzureWebJobsSendGridApiKey. いいえNo
からto ターゲットTo 受信者の電子メール アドレス。The recipient's email address. はいYes
fromfrom ソースFrom 送信者の電子メール アドレス。The sender's email address. はいYes
subjectsubject サブジェクトSubject 電子メールの件名。The subject of the email. はいYes
texttext TextText 電子メールの本文。The email content. はいYes

省略可能なプロパティは、バインド内で既定値が定義されていて、プログラムで追加またはオーバーライドされる場合があります。Optional properties may have default values defined in the binding and either added or overridden programmatically.

ローカルで開発している場合、アプリ設定は local.settings.json ファイルに保存されます。When you're developing locally, app settings go into the local.settings.json file.

host.json 設定host.json settings

このセクションでは、バージョン 2.x 以降でこのバインドに使用可能なグローバル構成設定について説明します。This section describes the global configuration settings available for this binding in versions 2.x and higher. 次の host.json ファイルの例には、このバインドのバージョン 2.x 以降の設定のみが含まれています。The example host.json file below contains only the version 2.x+ settings for this binding. バージョン 2.x 以降でのグローバル構成設定の詳細については、「Azure Functions の host.json のリファレンス」を参照してください。For more information about global configuration settings in versions 2.x and beyond, see host.json reference for Azure Functions.

注意

Functions 1.x の host.json のリファレンスについては、「host.json reference for Azure Functions 1.x (Azure Functions 1.x の host.json のリファレンス)」を参照してください。For a reference of host.json in Functions 1.x, see host.json reference for Azure Functions 1.x.

{
    "version": "2.0",
    "extensions": {
        "sendGrid": {
            "from": "Azure Functions <samples@functions.com>"
        }
    }
}
プロパティProperty DefaultDefault 説明Description
fromfrom 該当なしn/a すべての関数の送信者の電子メール アドレス。The sender's email address across all functions.

次のステップNext steps