Udostępnij za pomocą


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

Aby móc używać tego rozszerzenia powiązania w aplikacji, upewnij się, że plik host.json w katalogu głównym projektu zawiera następujące extensionBundle odwołanie:

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

W tym przykładzie version[4.0.0, 5.0.0) wartość polecenia nakazuje hostowi usługi Functions użycie wersji pakietu, która jest co najmniej 4.0.0 mniejsza niż 5.0.0, która zawiera wszystkie potencjalne wersje 4.x. Ta notacja skutecznie utrzymuje aplikację w najnowszej dostępnej wersji pomocniczej pakietu rozszerzenia v4.x.

Jeśli to możliwe, należy użyć najnowszej wersji głównej pakietu rozszerzeń i zezwolić środowisku uruchomieniowemu na automatyczne utrzymywanie najnowszej wersji pomocniczej. Zawartość najnowszego pakietu można wyświetlić na stronie wydania pakietów rozszerzeń. Aby uzyskać więcej informacji, zobacz Pakiety rozszerzeń usługi Azure Functions.

Example

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# działających w długoterminowych wersjach pomocy technicznej (LTS) i innych niż LTS dla platformy .NET i programu .NET Framework.
  • Model przetwarzania: skompilowana funkcja języka C#, która działa w tym samym procesie co środowisko uruchomieniowe usługi Azure Functions.
  • Skrypt języka C#: używany głównie podczas tworzenia funkcji języka C# w witrynie Azure Portal.

Important

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 przedstawiono 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();
    }
}

Attributes

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 roboczego obsługiwane są następujące parametry:

Właściwość atrybutu/adnotacji Description
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.
From (Opcjonalnie) Adres e-mail nadawcy.
Subject (Opcjonalnie) Temat wiadomości e-mail.
Text (Opcjonalnie) Zawartość wiadomości e-mail.

Annotations

Adnotacja SendGridOutput umożliwia deklaratywne konfigurowanie powiązania usługi SendGrid przez podanie następujących wartości konfiguracji.

Configuration

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 Description
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 jest 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.
from (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 plikulocal.settings.json w kolekcji Values .

ustawienia pliku host.json

W tej sekcji opisano ustawienia konfiguracji dostępne dla tego powiązania w wersji 2.x lub nowszej. Ustawienia w pliku host.json mają zastosowanie do wszystkich funkcji w wystąpieniu aplikacji funkcji. Aby uzyskać więcej informacji na temat ustawień konfiguracji aplikacji funkcji, zobacz host.json dokumentacja usługi Azure Functions.

Note

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>"
        }
    }
}
Property Default Description
from n/a Adres e-mail nadawcy we wszystkich funkcjach.

Dalsze kroki