Привязки SendGrid для Функций AzureAzure Functions SendGrid bindings

В этой статье объясняется, как отправить электронное сообщение с помощью привязок SendGrid в службе "Функции Azure".This article explains how to send email by using SendGrid bindings in Azure Functions. Служба "Функции Azure" поддерживают выходную привязку для SendGrid.Azure Functions supports an output binding for SendGrid.

Это справочные сведения для разработчиков функций Azure.This is reference information for Azure Functions developers. Если вы новичок в функциях Azure, начните со следующих ресурсов:If you're new to Azure Functions, start with the following resources:

Пакеты – Функции 1.xPackages - Functions 1.x

Привязки SendGrid доступны в пакете NuGet Microsoft.Azure.WebJobs.Extensions.SendGrid версии 2.x.The SendGrid bindings are provided in the Microsoft.Azure.WebJobs.Extensions.SendGrid NuGet package, version 2.x. Исходный код для пакета находится в репозитории GitHub azure-webjobs-sdk-extensions.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
Функции 1.xFunctions 1.x
Локальная разработка – библиотека классов C#Local development - C# class library Установка пакетаInstall the package
Локальная разработка – Скрипт C#, JavaScript, F#Local development - C# script, JavaScript, F# АвтоматическиAutomatic
Разработка на порталеPortal development АвтоматическиAutomatic

Packages — функции 2. x и более поздних версийPackages - Functions 2.x and higher

Привязки SendGrid доступны в пакете NuGet Microsoft.Azure.WebJobs.Extensions.SendGrid версии 3.x.The SendGrid bindings are provided in the Microsoft.Azure.WebJobs.Extensions.SendGrid NuGet package, version 3.x. Исходный код для пакета находится в репозитории GitHub azure-webjobs-sdk-extensions.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 Установка пакета NuGetInstall the NuGet package
Visual Studio CodeVisual Studio Code На базе основных средствBased on core tools Регистрация пакета расширенийRegister the extension bundle

Рекомендуем установить расширение инструментов Azure.Installing the Azure Tools extension is recommended.
Любой другой редактор или IDEAny other editor/IDE На базе основных средствBased on core tools Регистрация пакета расширенийRegister the extension bundle
Портал AzureAzure 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

В следующем примере показана функция C#, которая использует триггер очереди служебной шины и выходную привязку SendGrid.The following example shows a C# function that uses a Service Bus queue trigger and a SendGrid output binding.

СинхроннаяSynchronous

using SendGrid.Helpers.Mail;
using System.Text.Json;

...

[FunctionName("SendEmail")]
public static void Run(
    [ServiceBusTrigger("myqueue", Connection = "ServiceBusConnection")] Message email,
    [SendGrid(ApiKey = "CustomSendGridKeyAppSettingName")] out SendGridMessage message)
{
var emailObject = JsonSerializer.Deserialize<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;
using System.Text.Json;

...

[FunctionName("SendEmail")]
public static async Task Run(
 [ServiceBusTrigger("myqueue", Connection = "ServiceBusConnection")] Message email,
 [SendGrid(ApiKey = "CustomSendGridKeyAppSettingName")] IAsyncCollector<SendGridMessage> messageCollector)
{
 var emailObject = JsonSerializer.Deserialize<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; }
}

Вы можете не задавать свойство атрибута ApiKey при наличии ключа API в настройка приложения с именем AzureWebJobsSendGridApiKey.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.jsдля файла, а также SendGrid атрибут или Аннотация.The following table lists the binding configuration properties available in the function.json file and the SendGrid attribute/annotation.

function.js свойстваfunction.json property Свойство атрибута или заметкиAttribute/annotation property ОписаниеDescription НеобязательныйOptional
типtype Недоступно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. Это значение равно $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
изfrom ОтFrom Адрес электронной почты отправителя.The sender's email address. ДаYes
subjectsubject СубъектSubject Тема сообщения электронной почты.The subject of the email. ДаYes
texttext ТекстText Содержимое электронной почты.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.jsonhost.json settings

В этом разделе описаны глобальные параметры конфигурации, доступные для этой привязки в версиях 2. x и более поздних.This section describes the global configuration settings available for this binding in versions 2.x and higher. Пример host.jsв файле ниже содержит только параметры версии 2. x + для этой привязки.The example host.json file below contains only the version 2.x+ settings for this binding. Дополнительные сведения о глобальных параметрах конфигурации в версиях 2. x и более поздних версий см. в разделе host.jsв справочнике по функциям Azure.For more information about global configuration settings in versions 2.x and beyond, see host.json reference for Azure Functions.

Примечание

Чтобы получить дополнительные сведения о файле host.json в Функции 1.x, см. статью host.json reference for Azure Functions 1.x(Справочник по файлу host.json для службы "Функции Azure" версии 1.x.).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 По умолчаниюDefault ОписаниеDescription
изfrom Недоступноn/a Адрес электронной почты для всех функций.The sender's email address across all functions.

Дальнейшие действияNext steps