Dela via


Azure Functions SendGrid-bindningar

Den här artikeln beskriver hur du skickar e-post med hjälp av SendGrid-bindningar i Azure Functions. Azure Functions stöder en utdatabindning för SendGrid.

Det här är referensinformation för Azure Functions-utvecklare. Om du inte har använt Azure Functions tidigare börjar du med följande resurser:

Installera tillägget

Vilket NuGet-tilläggspaket du installerar beror på vilket C#-läge du använder i funktionsappen:

Funktioner körs i en isolerad C#-arbetsprocess. Mer information finns i Guide för att köra C# Azure Functions i en isolerad arbetsprocess.

Funktionerna i tillägget varierar beroende på tilläggsversionen:

Lägg till tillägget i projektet genom att installera NuGet-paketet version 3.x.

Installera paket

Från och med Functions version 2.x är HTTP-tillägget en del av ett tilläggspaket som anges i din host.json projektfil. Mer information finns i tilläggspaketet.

Den här versionen av tillägget bör redan vara tillgänglig för funktionsappen med tilläggspaketet version 2.x.

Exempel

En C#-funktion kan skapas med något av följande C#-lägen:

  • Isolerad arbetsmodell: Kompilerad C#-funktion som körs i en arbetsprocess som är isolerad från körningen. Isolerad arbetsprocess krävs för att stödja C#-funktioner som körs på LTS- och icke-LTS-versioner .NET och .NET Framework.
  • Processmodell: Kompilerad C#-funktion som körs i samma process som Functions-körningen.
  • C#-skript: Används främst när du skapar C#-funktioner i Azure Portal.

Vi har för närvarande inget exempel för att använda SendGrid-bindningen i en funktionsapp som körs i en isolerad arbetsprocess.

I följande exempel visas en SendGrid-utdatabindning i en function.json-fil och en JavaScript-funktion som använder bindningen.

Här är bindningsdata i filen function.json :

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

I konfigurationsavsnittet förklaras dessa egenskaper.

Här är JavaScript-koden:

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

Fullständiga PowerShell-exempel är för närvarande inte tillgängliga för SendGrid-bindningar.

I följande exempel visas en HTTP-utlöst funktion som skickar ett e-postmeddelande med hjälp av SendGrid-bindningen. Du kan ange standardvärden i bindningskonfigurationen. Till exempel konfigureras från e-postadressen i 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"
    }
  ]
}

Följande funktion visar hur du kan ange anpassade värden för valfria egenskaper.

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

I följande exempel används kommentaren @SendGridOutput från Java Functions-körningsbiblioteket för att skicka ett e-postmeddelande med hjälp av SendGrid-utdatabindningen.

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

Attribut

C#-bibliotek i både processprocess och isolerad arbetsprocess använder attribut för att definiera utdatabindningen. C#-skriptet använder i stället en function.json konfigurationsfil.

I funktionsappar för SendGridOutputAttribute isolerade arbetsprocesser stöder följande parametrar:

Egenskap för attribut/anteckning beskrivning
ApiKey Namnet på en appinställning som innehåller din API-nyckel. Om det inte anges är AzureWebJobsSendGridApiKeystandardnamnet för appinställningen .
To (Valfritt) Mottagarens e-postadress.
Från (Valfritt) Avsändarens e-postadress.
Ämne (Valfritt) Ämnet för e-postmeddelandet.
Text (Valfritt) E-postinnehållet.

Kommentarer

Med SendGridOutput-kommentaren kan du deklarativt konfigurera SendGrid-bindningen genom att ange följande konfigurationsvärden.

Konfiguration

I följande tabell visas de bindningskonfigurationsegenskaper som är tillgängliga i function.json-filen och attributet/anteckningenSendGrid.

egenskapen function.json beskrivning
typ Måste anges till sendGrid.
riktning Måste anges till out.
Namn Variabelnamnet som används i funktionskoden för begäran eller begärandetexten. Det här värdet är $return när det bara finns ett returvärde.
apiKey Namnet på en appinställning som innehåller din API-nyckel. Om det inte anges är standardnamnet för appinställningen AzureWebJobsSendGridApiKey.
to (Valfritt) Mottagarens e-postadress.
från (Valfritt) Avsändarens e-postadress.
Ämne (Valfritt) Ämnet för e-postmeddelandet.
text (Valfritt) E-postinnehållet.

Valfria egenskaper kan ha standardvärden som definierats i bindningen och antingen lagts till eller åsidosatts programmatiskt.

När du utvecklar lokalt lägger du till dina programinställningar i den local.settings.json filen i Values samlingen.

host.json inställningar

I det här avsnittet beskrivs de konfigurationsinställningar som är tillgängliga för den här bindningen i version 2.x och senare. Inställningar i host.json-filen gäller för alla funktioner i en funktionsappinstans. Exemplet host.json filen nedan innehåller endast version 2.x+-inställningarna för den här bindningen. Mer information om konfigurationsinställningar för funktionsappar i version 2.x och senare versioner finns i host.json referens för Azure Functions.

Kommentar

En referens för host.json i Functions 1.x finns i host.json referens för Azure Functions 1.x.

{
    "version": "2.0",
    "extensions": {
        "sendGrid": {
            "from": "Azure Functions <samples@functions.com>"
        }
    }
}
Property Standardvärde beskrivning
från saknas Avsändarens e-postadress för alla funktioner.

Nästa steg