Поделиться через


Привязки SendGrid для Функций Azure

В этой статье объясняется, как отправлять сообщения электронной почты с помощью привязок SendGrid в Функциях Azure. Служба "Функции Azure" поддерживают выходную привязку для SendGrid.

Это справочные сведения для разработчиков функций Azure. Если вы новичок в функциях Azure, начните со следующих ресурсов:

Установка расширения

Устанавливаемый пакет расширения NuGet зависит от режима C#, который используется в приложении-функции:

Функции выполняются в изолированном рабочем процессе C#. Дополнительные сведения см. в руководстве по запуску Функции Azure C# в изолированном рабочем процессе.

Функциональные возможности расширения отличаются в зависимости от версии расширения:

Добавьте расширение в проект, установив пакет NuGet версии 3.x.

Установка пакета

Чтобы использовать это расширение привязки в приложении, убедитесь, что файл host.json в корне проекта содержит следующую extensionBundle ссылку:

{
    "version": "2.0",
    "extensionBundle": {
        "id": "Microsoft.Azure.Functions.ExtensionBundle",
        "version": "[4.0.0, 5.0.0)"
    }
}

В этом примере значение указывает узлу version функций использовать версию пакета, которая по крайней мере [4.0.0, 5.0.0) меньше4.0.0, чем , которая включает все потенциальные версии 4.x.5.0.0 Эта нотация эффективно поддерживает ваше приложение в последней доступной дополнительной версии пакета расширений версии 4.x.

По возможности следует использовать последнюю версию пакета расширений и разрешить среде выполнения автоматически поддерживать последнюю дополнительную версию. Содержимое последнего пакета можно просмотреть на странице выпуска пакетов расширений. Дополнительные сведения см. в пакетах расширений функций Azure.

Example

Вы можете создать функцию C# с помощью одного из следующих режимов C#:

  • Изолированная рабочая модель: скомпилированная функция C#, которая выполняется в рабочем процессе, изолированном от среды выполнения. Изолированный рабочий процесс необходим для поддержки функций C#, работающих в долгосрочной поддержке (LTS) и версиях, отличных от LTS для .NET и .NET Framework.
  • Модель в процессе: скомпилированная функция C#, которая выполняется в том же процессе, что и среда выполнения Функций Azure.
  • Скрипт C#: используется в основном при создании функций C# на портале Azure.

В настоящее время у нас нет примера использования привязки SendGrid в приложении-функции, работающем в изолированном рабочем процессе.

В следующем примере показана выходная привязка SendGrid в файле function.json и функция JavaScript , использующая привязку.

Ниже приведены данные привязки в файле function.json :

{
    "bindings": [
        {
            "name": "$return",
            "type": "sendGrid",
            "direction": "out",
            "apiKey" : "MySendGridKey",
            "to": "{ToEmail}",
            "from": "{FromEmail}",
            "subject": "SendGrid output bindings"
        }
    ]
}

В разделе конфигурации описаны эти свойства.

Ниже показан код JavaScript.

module.exports = function (context, input) {
    var message = {
        "personalizations": [ { "to": [ { "email": "[email protected]" } ] } ],
        from: { email: "[email protected]" },
        subject: "Azure news",
        content: [{
            type: 'text/plain',
            value: input
        }]
    };

    return message;
};

Полные примеры PowerShell для привязок SendGrid в настоящее время недоступны.

В следующем примере показана функция, активируемая по HTTP, которая отправляет сообщение электронной почты с помощью привязки SendGrid. В конфигурации этой привязки можно оставить значения по умолчанию. Например, адрес электронной почты настроен в function.json.

{
  "scriptFile": "__init__.py",
  "bindings": [
    {
      "type": "httpTrigger",
      "authLevel": "function",
      "direction": "in",
      "name": "req",
      "methods": ["get", "post"]
    },
    {
      "type": "http",
      "direction": "out",
      "name": "$return"
    },
    {
      "type": "sendGrid",
      "name": "sendGridMessage",
      "direction": "out",
      "apiKey": "SendGrid_API_Key",
      "from": "[email protected]"
    }
  ]
}

Следующая функция демонстрирует, как указать пользовательские значения для необязательных свойств.

import logging
import json
import azure.functions as func

def main(req: func.HttpRequest, sendGridMessage: func.Out[str]) -> func.HttpResponse:

    value = "Sent from Azure Functions"

    message = {
        "personalizations": [ {
          "to": [{
            "email": "[email protected]"
            }]}],
        "subject": "Azure Functions email with SendGrid",
        "content": [{
            "type": "text/plain",
            "value": value }]}

    sendGridMessage.set(json.dumps(message))

    return func.HttpResponse(f"Sent")

В следующем примере применяется аннотация @SendGridOutput из библиотеки среды выполнения функций Java, чтобы отправить сообщение электронной почты с использованием выходной привязки SendGrid.

package com.function;

import java.util.*;
import com.microsoft.azure.functions.annotation.*;
import com.microsoft.azure.functions.*;

public class HttpTriggerSendGrid {

    @FunctionName("HttpTriggerSendGrid")
    public HttpResponseMessage run(

        @HttpTrigger(
            name = "req",
            methods = { HttpMethod.GET, HttpMethod.POST },
            authLevel = AuthorizationLevel.FUNCTION)
                HttpRequestMessage<Optional<String>> request,

        @SendGridOutput(
            name = "message",
            dataType = "String",
            apiKey = "SendGrid_API_Key",
            to = "[email protected]",
            from = "[email protected]",
            subject = "Azure Functions email with SendGrid",
            text = "Sent from Azure Functions")
                OutputBinding<String> message,

        final ExecutionContext context) {

        final String toAddress = "[email protected]";
        final String value = "Sent from Azure Functions";

        StringBuilder builder = new StringBuilder()
            .append("{")
            .append("\"personalizations\": [{ \"to\": [{ \"email\": \"%s\"}]}],")
            .append("\"content\": [{\"type\": \"text/plain\", \"value\": \"%s\"}]")
            .append("}");

        final String body = String.format(builder.toString(), toAddress, value);

        message.setValue(body);

        return request.createResponseBuilder(HttpStatus.OK).body("Sent").build();
    }
}

Attributes

Библиотеки C# в процессе и изолированном рабочем процессе используют атрибуты для определения выходной привязки. Вместо этого в скрипте C# используется файл конфигурации function.json.

В поддерживаются следующие параметры:

Свойство Атрибута и заметки Description
ApiKey Имя параметра приложения, в котором содержится ваш ключ API. Если имя параметра приложения не указано, по умолчанию используется AzureWebJobsSendGridApiKey.
To (Необязательно) Введите адрес электронной почты получателя.
From (Необязательно) Введите адрес электронной почты отправителя.
Subject (Необязательно) Введите тему сообщения электронной почты.
Text (Необязательно) Текст сообщения.

Annotations

Заметка SendGridOutput позволяет декларативно настроить привязку SendGrid, указав следующие значения конфигурации.

Configuration

В следующей таблице перечислены свойства конфигурации привязки, доступные в файле function.json и SendGrid атрибуте или заметке.

Свойство в function.json Description
type Должен иметь значениеsendGrid.
direction Должен иметь значениеout.
name Имя переменной, из которой в коде функции можно получить запрос или текст запроса. Это значение имеет только $return одно возвращаемое значение.
apiKey Имя параметра приложения, в котором содержится ваш ключ API. Если параметр приложения по умолчанию не задан, это AzureWebJobsSendGridApiKey.
to (Необязательно) Введите адрес электронной почты получателя.
from (Необязательно) Введите адрес электронной почты отправителя.
subject (Необязательно) Введите тему сообщения электронной почты.
text (Необязательно) Текст сообщения.

Для необязательных свойств можно определить в привязке значения по умолчанию, а затем добавлять или переопределять их программно.

При локальной разработке добавьте параметры приложения в файлlocal.settings.json в Values коллекции.

Параметры файла host.json

В этом разделе описаны параметры конфигурации, доступные для этой привязки в версии 2.x и более поздних версиях. Параметры в файле host.json применяются ко всем функциям в экземпляре приложения-функции. Дополнительные сведения о параметрах конфигурации приложения-функции см. вhost.json справочнике по функциям Azure.

Note

Чтобы получить дополнительные сведения о файле host.json в Функции 1.x, см. статью host.json reference for Azure Functions 1.x(Справочник по файлу host.json для службы "Функции Azure" версии 1.x.).

{
    "version": "2.0",
    "extensions": {
        "sendGrid": {
            "from": "Azure Functions <[email protected]>"
        }
    }
}
Property Default Description
from n/a Адрес электронной почты для всех функций.

Дальнейшие шаги