Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
This article explains how to send email by using SendGrid bindings in Azure Functions. Служба "Функции Azure" поддерживают выходную привязку для SendGrid.
Это справочные сведения для разработчиков функций Azure. Если вы новичок в функциях Azure, начните со следующих ресурсов:
Ссылки для разработчиков C#:
Install extension
Устанавливаемый пакет расширения NuGet зависит от режима C#, который используется в приложении-функции:
Функции выполняются в изолированном рабочем процессе C#. Дополнительные сведения см. в руководстве по запуску Функции Azure C# в изолированном рабочем процессе.
Функциональные возможности расширения отличаются в зависимости от версии расширения:
Add the extension to your project by installing the NuGet package, version 3.x.
Install bundle
Starting with Functions version 2.x, the HTTP extension is part of an extension bundle, which is specified in your host.json project file. To learn more, see extension bundle.
This version of the extension should already be available to your function app with extension bundle, version 2.x.
Example
Вы можете создать функцию C# с помощью одного из следующих режимов C#:
- Изолированная рабочая модель: скомпилированная функция C#, которая выполняется в рабочем процессе, изолированном от среды выполнения. Изолированный рабочий процесс необходим для поддержки функций C#, работающих в долгосрочной поддержке (LTS) и версиях, отличных от LTS для .NET и .NET Framework.
- In-process model: Compiled C# function that runs in the same process as the Azure Functions runtime.
- C# script: Used primarily when you create C# functions in the Azure portal.
Important
Поддержка будет завершена для модели в процессе 10 ноября 2026 г. Настоятельно рекомендуется перенести приложения в изолированную рабочую модель для полной поддержки.
В настоящее время у нас нет примера использования привязки SendGrid в приложении-функции, работающем в изолированном рабочем процессе.
The following example shows a SendGrid output binding in a function.json file and a JavaScript function that uses the binding.
Here's the binding data in the function.json file:
{
"bindings": [
{
"name": "$return",
"type": "sendGrid",
"direction": "out",
"apiKey" : "MySendGridKey",
"to": "{ToEmail}",
"from": "{FromEmail}",
"subject": "SendGrid output bindings"
}
]
}
The configuration section explains these properties.
Ниже показан код JavaScript.
module.exports = function (context, input) {
var message = {
"personalizations": [ { "to": [ { "email": "sample@sample.com" } ] } ],
from: { email: "sender@contoso.com" },
subject: "Azure news",
content: [{
type: 'text/plain',
value: input
}]
};
return message;
};
Полные примеры PowerShell для привязок SendGrid в настоящее время недоступны.
В следующем примере показана функция, активируемая по HTTP, которая отправляет сообщение электронной почты с помощью привязки SendGrid. В конфигурации этой привязки можно оставить значения по умолчанию. For instance, the from email address is configured in 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": "sender@contoso.com"
}
]
}
Следующая функция демонстрирует, как указать пользовательские значения для необязательных свойств.
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": "user@contoso.com"
}]}],
"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 = "user@contoso.com",
from = "sender@contoso.com",
subject = "Azure Functions email with SendGrid",
text = "Sent from Azure Functions")
OutputBinding<String> message,
final ExecutionContext context) {
final String toAddress = "user@contoso.com";
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
Both in-process and isolated worker process C# libraries use attributes to define the output binding. Вместо этого в скрипте C# используется файл конфигурации function.json.
В поддерживаются следующие параметры:
Attribute/annotation property | Description |
---|---|
ApiKey | Имя параметра приложения, в котором содержится ваш ключ API. Если имя параметра приложения не указано, по умолчанию используется AzureWebJobsSendGridApiKey . |
To | (Необязательно) Введите адрес электронной почты получателя. |
From | (Необязательно) Введите адрес электронной почты отправителя. |
Subject | (Необязательно) Введите тему сообщения электронной почты. |
Text | (Необязательно) Текст сообщения. |
Annotations
The SendGridOutput annotation allows you to declaratively configure the SendGrid binding by providing the following configuration values.
Configuration
The following table lists the binding configuration properties available in the function.json file and the SendGrid
attribute/annotation.
function.json property | Description |
---|---|
type | Должен иметь значениеsendGrid . |
direction | Должен иметь значениеout . |
name | Имя переменной, из которой в коде функции можно получить запрос или текст запроса. Это значение равно $return при наличии только одного возвращаемого значения. |
apiKey | Имя параметра приложения, в котором содержится ваш ключ API. If not set, the default app setting name is AzureWebJobsSendGridApiKey. |
to | (Необязательно) Введите адрес электронной почты получателя. |
from | (Необязательно) Введите адрес электронной почты отправителя. |
subject | (Необязательно) Введите тему сообщения электронной почты. |
text | (Необязательно) Текст сообщения. |
Для необязательных свойств можно определить в привязке значения по умолчанию, а затем добавлять или переопределять их программно.
When you're developing locally, add your application settings in the local.settings.json file in the Values
collection.
host.json settings
В этом разделе описаны параметры конфигурации, доступные для этой привязки в версии 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 <samples@functions.com>"
}
}
}
Property | Default | Description |
---|---|---|
from | n/a | Адрес электронной почты для всех функций. |