Sdílet prostřednictvím


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:

Nainstalovat 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

Pokud chcete v aplikaci použít toto rozšíření vazeb, ujistěte se, že soubor host.json v kořenovém adresáři projektu obsahuje tento extensionBundle odkaz:

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

V tomto příkladu version hodnota [4.0.0, 5.0.0) dává hostiteli Functions pokyn, aby používal verzi sady, která je alespoň 4.0.0 , ale menší než 5.0.0, která zahrnuje všechny potenciální verze 4.x. Tato notace efektivně udržuje vaši aplikaci na nejnovější dostupné podverzi sady rozšíření v4.x.

Pokud je to možné, měli byste použít nejnovější hlavní verzi sady rozšíření a umožnit modulu runtime automaticky udržovat nejnovější podverzi. Obsah nejnovější sady můžete zobrazit na stránce verze sady rozšíření. Další informace najdete v sadách rozšíření Azure Functions.

Example

Funkci jazyka C# můžete 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 se vyžaduje pro podporu funkcí jazyka C# běžících na dlouhodobé podpoře (LTS) a jiných verzích než LTS pro .NET a rozhraní .NET Framework.
  • Model v procesu: Zkompilovaná funkce jazyka C#, která běží ve stejném procesu jako modul runtime Azure 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 souborufunction.json a funkci JavaScript , 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();
    }
}

Attributes

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 podporují následující parametry:

Vlastnost atributu/poznámky Description
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.
From (Volitelné) E-mailová adresa odesílatele.
Subject (Volitelné) Předmět e-mailu.
Text (Volitelné) Obsah e-mailu.

Annotations

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

Configuration

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 Description
type Musí být nastavena na sendGridhodnotu .
direction Musí být nastavena na outhodnotu .
name 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.
from (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 souborulocal.settings.json v kolekci Values .

nastavení host.json

Tato část popisuje nastavení konfigurace dostupné pro tuto vazbu ve verzi 2.x a novější. Nastavení v souboru host.json platí pro všechny funkce v instanci aplikace funkcí. Další informace o nastavení konfigurace aplikace funkcí najdete v host.json referenčních informacích ke službě Azure Functions.

Note

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>"
        }
    }
}
Property Default Description
from n/a E-mailová adresa odesílatele ve všech funkcích.

Další kroky