Udostępnij za pośrednictwem


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:

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ń.

Ta wersja rozszerzenia powinna być już dostępna dla aplikacji funkcji z pakietem rozszerzeń w wersji 2.x.

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.

Następne kroki