Vazby Azure Functions SendGrid

Tento článek vysvětluje, jak odesílat e-maily pomocí vazeb SendGrid ve službě Azure Functions. Azure Functions podporuje výstupní vazbu pro SendGrid.

Toto jsou referenční informace pro vývojáře Azure Functions. Pokud s Azure Functions začínáte, začněte s následujícími prostředky:

Instalace rozšíření

Balíček NuGet rozšíření, který nainstalujete, závisí na režimu jazyka C#, který používáte ve své aplikaci funkcí:

Funkce se spouštějí v izolovaném pracovním procesu C#. Další informace najdete v průvodci spuštěním služby Azure Functions v jazyce C# v izolovaném pracovním procesu.

Funkce rozšíření se liší v závislosti na verzi rozšíření:

Přidejte rozšíření do projektu instalací balíčku NuGet verze 3.x.

Instalace sady

Počínaje funkcí verze 2.x je rozšíření HTTP součástí sady rozšíření, která je zadaná v souboru projektu host.json. Další informace najdete v sadě rozšíření.

Tato verze rozšíření by už měla být dostupná pro vaši aplikaci funkcí s sadou rozšíření verze 2.x.

Příklad

Funkci jazyka C# je možné vytvořit pomocí jednoho z následujících režimů jazyka C#:

  • Izolovaný model pracovního procesu: Kompilovaná funkce jazyka C#, která běží v pracovním procesu, který je izolovaný od modulu runtime. Izolovaný pracovní proces je nutný pro podporu funkcí C# spuštěných na LTS a jiných verzích než LTS .NET a rozhraní .NET Framework.
  • Model v procesu: Zkompilovaná funkce jazyka C#, která běží ve stejném procesu jako modul runtime služby Functions.
  • Skript jazyka C#: Používá se především při vytváření funkcí jazyka C# na webu Azure Portal.

V současné době nemáme příklad použití vazby SendGrid v aplikaci funkcí spuštěné v izolovaném pracovním procesu.

Následující příklad ukazuje výstupní vazbu SendGrid v souboru function.json a funkci JavaScriptu, která používá vazbu.

Tady jsou data vazby v souboru function.json :

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

Oddíl konfigurace vysvětluje tyto vlastnosti.

Tady je javascriptový kód:

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;
};

Kompletní příklady PowerShellu nejsou aktuálně k dispozici pro vazby SendGrid.

Následující příklad ukazuje funkci aktivovanou protokolem HTTP, která odesílá e-mail pomocí vazby SendGrid. V konfiguraci vazby můžete zadat výchozí hodnoty. Například z e-mailové adresy je nakonfigurovaná v 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"
    }
  ]
}

Následující funkce ukazuje, jak můžete zadat vlastní hodnoty pro volitelné vlastnosti.

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")

Následující příklad používá poznámku @SendGridOutput z knihovny modulu runtime funkcí Java k odeslání e-mailu pomocí výstupní vazby 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();
    }
}

Atributy

Knihovny C# v procesu i izolovaného pracovního procesu používají atributy k definování výstupní vazby. Skript jazyka C# místo toho používá konfigurační soubor function.json.

V aplikacích SendGridOutputAttribute funkcí izolovaného pracovního procesu podporují následující parametry:

Vlastnost atributu/poznámky Popis
Klíč rozhraní API Název nastavení aplikace, které obsahuje váš klíč rozhraní API. Pokud není nastavená, výchozí název nastavení aplikace je AzureWebJobsSendGridApiKey.
Na (Volitelné) E-mailová adresa příjemce.
Od (Volitelné) E-mailová adresa odesílatele.
Předmět (Volitelné) Předmět e-mailu.
Text (Volitelné) Obsah e-mailu.

Poznámky

Poznámka SendGridOutput umožňuje deklarativní konfiguraci vazby SendGrid zadáním následujících hodnot konfigurace.

Konfigurace

Následující tabulka uvádí vlastnosti konfigurace vazby, které jsou k dispozici v souboru function.json a atributu/poznámky SendGrid .

vlastnost function.json Popis
type Musí být nastavena na sendGridhodnotu .
direction Musí být nastavena na outhodnotu .
Jméno Název proměnné použité v kódu funkce pro text požadavku nebo požadavku. Tato hodnota je $return v případě, že existuje pouze jedna návratová hodnota.
apiKey Název nastavení aplikace, které obsahuje váš klíč rozhraní API. Pokud není nastavené, výchozí název nastavení aplikace je AzureWebJobsSendGridApiKey.
to (Volitelné) E-mailová adresa příjemce.
od (Volitelné) E-mailová adresa odesílatele.
subject (Volitelné) Předmět e-mailu.
text (Volitelné) Obsah e-mailu.

Volitelné vlastnosti můžou mít výchozí hodnoty definované v vazbě a buď přidané nebo přepsáné programově.

Při místním vývoji přidejte nastavení aplikace do souboru local.settings.json v kolekci Values .

nastavení host.json

Tato část popisuje nastavení konfigurace dostupné pro tuto vazbu ve verzích 2.x a novějších. Nastavení v souboru host.json platí pro všechny funkce v instanci aplikace funkcí. Následující příklad host.json souboru obsahuje pouze nastavení verze 2.x+ pro tuto vazbu. Další informace o nastavení konfigurace aplikace funkcí ve verzích 2.x a novějších verzích najdete v host.json referenčních informacích ke službě Azure Functions.

Poznámka:

Referenční informace o host.json ve službě Functions 1.x najdete v host.json referenčních informacích ke službě Azure Functions 1.x.

{
    "version": "2.0",
    "extensions": {
        "sendGrid": {
            "from": "Azure Functions <samples@functions.com>"
        }
    }
}
Vlastnost Výchozí Popis
od Není k dispozici E-mailová adresa odesílatele ve všech funkcích.

Další kroky