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

För att kunna använda det här bindningstillägget i din app kontrollerar du att denhost.json filen i projektets rot innehåller den här extensionBundle referensen:

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

I det här exemplet version instruerar värdet [4.0.0, 5.0.0) för Functions-värden att använda en paketversion som är minst 4.0.0 men mindre än 5.0.0, som innehåller alla potentiella versioner av 4.x. Den här notationen underhåller appen på den senaste tillgängliga delversionen av v4.x-tilläggspaketet.

När det är möjligt bör du använda den senaste huvudversionen av tilläggspaketet och låta körningen automatiskt behålla den senaste delversionen. Du kan visa innehållet i det senaste paketet på versionssidan för tilläggspaket. Mer information finns i Azure Functions-tilläggspaket.

Example

Du kan skapa en C#-funktion 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. En isolerad arbetsprocess krävs för att stödja C#-funktioner som körs på långsiktig support (LTS) och icke-LTS-versioner för .NET och .NET Framework.
  • Processmodell: Kompilerad C#-funktion som körs i samma process som Azure Functions-körningen.
  • C#-skript: Används främst när du skapar C#-funktioner i Azure-portalen.

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 filenfunction.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 @SendGridOutputfrå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();
    }
}

Attributes

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 stöder följande parametrar:

Egenskap för attribut/anteckning Description
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.
From (Valfritt) Avsändarens e-postadress.
Subject (Valfritt) Ämnet för e-postmeddelandet.
Text (Valfritt) E-postinnehållet.

Annotations

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

Configuration

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

egenskapen function.json Description
type Måste anges till sendGrid.
direction Måste anges till out.
name 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.
from (Valfritt) Avsändarens e-postadress.
subject (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 filenlocal.settings.json 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. Mer information om konfigurationsinställningar för funktionsappar finns ihost.json referens för Azure Functions.

Note

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 Default Description
from n/a Avsändarens e-postadress för alla funktioner.

Nästa steg