Powiązania usługi Azure Functions SendGrid
W tym artykule wyjaśniono, jak wysyłać wiadomości e-mail przy użyciu powiązań usługi SendGrid w usłudze Azure Functions. Usługa Azure Functions obsługuje powiązanie wyjściowe dla usługi SendGrid.
Są to informacje referencyjne dla deweloperów usługi Azure Functions. Jeśli dopiero zaczynasz korzystać z usługi Azure Functions, zacznij od następujących zasobów:
Dokumentacja dla deweloperów języka C#:
Instalowanie rozszerzenia
Instalowany pakiet NuGet rozszerzenia zależy od trybu języka C#, którego używasz w aplikacji funkcji:
Funkcje są wykonywane w izolowanym procesie roboczym języka C#. Aby dowiedzieć się więcej, zobacz Przewodnik dotyczący uruchamiania usługi Azure Functions w języku C# w izolowanym procesie roboczym.
Funkcjonalność rozszerzenia różni się w zależności od wersji rozszerzenia:
Dodaj rozszerzenie do projektu, instalując pakiet NuGet w wersji 3.x.
Instalowanie pakietu
Począwszy od usługi Functions w wersji 2.x, rozszerzenie HTTP jest częścią pakietu rozszerzeń określonego w pliku projektu host.json. Aby dowiedzieć się więcej, zobacz pakiet rozszerzeń.
Przykład
Funkcję języka C# można utworzyć przy użyciu jednego z następujących trybów języka C#:
- Model izolowanego procesu roboczego: skompilowana funkcja języka C#, która jest uruchamiana w procesie roboczym izolowanym od środowiska uruchomieniowego. Proces izolowanego procesu roboczego jest wymagany do obsługi funkcji języka C# uruchomionych w wersjach LTS i innych niż LTS platformy .NET oraz programu .NET Framework.
- Model przetwarzania: skompilowana funkcja języka C#, która działa w tym samym procesie co środowisko uruchomieniowe usługi Functions.
- Skrypt języka C#: używany głównie podczas tworzenia funkcji języka C# w witrynie Azure Portal.
Ważne
Wsparcie zostanie zakończone dla modelu procesu 10 listopada 2026 r. Zdecydowanie zalecamy przeprowadzenie migracji aplikacji do izolowanego modelu procesu roboczego w celu uzyskania pełnej obsługi.
Obecnie nie mamy przykładu użycia powiązania SendGrid w aplikacji funkcji uruchomionej w izolowanym procesie roboczym.
W poniższym przykładzie pokazano powiązanie wyjściowe usługi SendGrid w pliku function.json i funkcję Języka JavaScript, która używa powiązania.
Oto dane powiązania w pliku function.json :
{
"bindings": [
{
"name": "$return",
"type": "sendGrid",
"direction": "out",
"apiKey" : "MySendGridKey",
"to": "{ToEmail}",
"from": "{FromEmail}",
"subject": "SendGrid output bindings"
}
]
}
W sekcji konfiguracji opisano te właściwości.
Oto kod 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;
};
Kompletne przykłady programu PowerShell nie są obecnie dostępne dla powiązań usługi SendGrid.
W poniższym przykładzie przedstawiono funkcję wyzwalaną przez protokół HTTP, która wysyła wiadomość e-mail przy użyciu powiązania SendGrid. Wartości domyślne można podać w konfiguracji powiązania. Na przykład adres e-mail z adresu e-mail jest skonfigurowany w 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"
}
]
}
Poniższa funkcja pokazuje, jak można podać wartości niestandardowe dla właściwości opcjonalnych.
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")
W poniższym przykładzie @SendGridOutput
użyto adnotacji z biblioteki środowiska uruchomieniowego funkcji Języka Java do wysłania wiadomości e-mail przy użyciu powiązania wyjściowego usługi 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();
}
}
Atrybuty
Zarówno w procesie przetwarzania, jak i izolowanym procesie roboczym biblioteki języka C# używają atrybutów do zdefiniowania powiązania wyjściowego. Zamiast tego skrypt języka C# używa pliku konfiguracji function.json.
W aplikacjach SendGridOutputAttribute
funkcji izolowanego procesu roboczego obsługiwane są następujące parametry:
Właściwość atrybutu/adnotacji | opis |
---|---|
ApiKey | Nazwa ustawienia aplikacji zawierającego klucz interfejsu API. Jeśli nie zostanie ustawiona, domyślna nazwa ustawienia aplikacji to AzureWebJobsSendGridApiKey . |
Do | (Opcjonalnie) Adres e-mail adresata. |
Od | (Opcjonalnie) Adres e-mail nadawcy. |
Temat | (Opcjonalnie) Temat wiadomości e-mail. |
Tekst | (Opcjonalnie) Zawartość wiadomości e-mail. |
Adnotacje
Adnotacja SendGridOutput umożliwia deklaratywne konfigurowanie powiązania usługi SendGrid przez podanie następujących wartości konfiguracji.
Konfigurowanie
W poniższej tabeli wymieniono właściwości konfiguracji powiązania dostępne w pliku function.json oraz atrybut/adnotację SendGrid
.
właściwość function.json | opis |
---|---|
type | Musi być ustawiona wartość sendGrid . |
direction | Musi być ustawiona wartość out . |
name | Nazwa zmiennej używana w kodzie funkcji dla treści żądania lub żądania. Ta wartość jest $return taka, gdy istnieje tylko jedna zwracana wartość. |
apiKey | Nazwa ustawienia aplikacji zawierającego klucz interfejsu API. Jeśli nie zostanie ustawiona, domyślna nazwa ustawienia aplikacji to AzureWebJobsSendGridApiKey. |
to | (Opcjonalnie) Adres e-mail adresata. |
z | (Opcjonalnie) Adres e-mail nadawcy. |
subject | (Opcjonalnie) Temat wiadomości e-mail. |
text | (Opcjonalnie) Zawartość wiadomości e-mail. |
Właściwości opcjonalne mogą mieć wartości domyślne zdefiniowane w powiązaniu i programowo dodane lub zastąpione.
Podczas tworzenia aplikacji lokalnie dodaj ustawienia aplikacji w pliku local.settings.json w kolekcji Values
.
ustawienia host.json
W tej sekcji opisano ustawienia konfiguracji dostępne dla tego powiązania w wersjach 2.x i nowszych. Ustawienia w pliku host.json mają zastosowanie do wszystkich funkcji w wystąpieniu aplikacji funkcji. Poniższy przykładowy plik host.json zawiera tylko ustawienia wersji 2.x+ dla tego powiązania. Aby uzyskać więcej informacji na temat ustawień konfiguracji aplikacji funkcji w wersjach 2.x i nowszych, zobacz host.json dokumentacja usługi Azure Functions.
Uwaga
Aby zapoznać się z dokumentacją host.json w usłudze Functions 1.x, zobacz host.json reference for Azure Functions 1.x (Dokumentacja usługi Azure Functions 1.x).
{
"version": "2.0",
"extensions": {
"sendGrid": {
"from": "Azure Functions <samples@functions.com>"
}
}
}
Właściwości | Domyślny | opis |
---|---|---|
z | nie dotyczy | Adres e-mail nadawcy we wszystkich funkcjach. |