Azure Functions SendGrid-bindingen

In dit artikel wordt uitgelegd hoe u e-mail verzendt met behulp van SendGrid-bindingen in Azure Functions. Azure Functions ondersteunt een uitvoerbinding voor SendGrid.

Dit is referentie-informatie voor Azure Functions-ontwikkelaars. Als u nog geen ervaring hebt met Azure Functions, begint u met de volgende resources:

De extensie installeren

Het NuGet-extensiepakket dat u installeert, is afhankelijk van de C#-modus die u gebruikt in uw functie-app:

Functies worden uitgevoerd in een geïsoleerd C#-werkproces. Zie De handleiding voor het uitvoeren van C# Azure Functions in een geïsoleerd werkproces voor meer informatie.

De functionaliteit van de extensie varieert afhankelijk van de extensieversie:

Voeg de extensie toe aan uw project door het NuGet-pakket, versie 3.x, te installeren.

Bundel installeren

Vanaf Functions versie 2.x maakt de HTTP-extensie deel uit van een extensiebundel, die is opgegeven in uw host.json projectbestand. Zie uitbreidingsbundel voor meer informatie.

Deze versie van de extensie moet al beschikbaar zijn voor uw functie-app met extensiebundel, versie 2.x.

Opmerking

U kunt een C#-functie maken met behulp van een van de volgende C#-modi:

  • Geïsoleerd werkrolmodel: gecompileerde C#-functie die wordt uitgevoerd in een werkproces dat is geïsoleerd van de runtime. Geïsoleerd werkproces is vereist voor de ondersteuning van C#-functies die worden uitgevoerd op LTS- en niet-LTS-versies .NET en .NET Framework.
  • In-process model: gecompileerde C#-functie die wordt uitgevoerd in hetzelfde proces als de Functions-runtime.
  • C#-script: wordt voornamelijk gebruikt wanneer u C#-functies maakt in Azure Portal.

We hebben momenteel geen voorbeeld voor het gebruik van de SendGrid-binding in een functie-app die wordt uitgevoerd in een geïsoleerd werkproces.

In het volgende voorbeeld ziet u een SendGrid-uitvoerbinding in een function.json-bestand en een JavaScript-functie die gebruikmaakt van de binding.

Dit zijn de bindingsgegevens in het bestand function.json :

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

In de configuratiesectie worden deze eigenschappen uitgelegd.

Dit is de JavaScript-code:

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

Volledige PowerShell-voorbeelden zijn momenteel niet beschikbaar voor SendGrid-bindingen.

In het volgende voorbeeld ziet u een door HTTP geactiveerde functie waarmee een e-mailbericht wordt verzonden met behulp van de SendGrid-binding. U kunt standaardwaarden opgeven in de bindingsconfiguratie. Het van-e-mailadres is bijvoorbeeld geconfigureerd in 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"
    }
  ]
}

De volgende functie laat zien hoe u aangepaste waarden voor optionele eigenschappen kunt opgeven.

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

In het volgende voorbeeld wordt de @SendGridOutput aantekening uit de Runtime-bibliotheek van Java Functions gebruikt om een e-mailbericht te verzenden met behulp van de SendGrid-uitvoerbinding.

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

Kenmerken

Zowel in-processals geïsoleerde werkproces C#-bibliotheken gebruiken kenmerken om de uitvoerbinding te definiëren. C#-script maakt in plaats daarvan gebruik van een function.json configuratiebestand.

In geïsoleerde werkprocesfunctie-apps ondersteunt de SendGridOutputAttribute volgende parameters:

Eigenschap Kenmerk/aantekening Beschrijving
ApiKey De naam van een app-instelling die uw API-sleutel bevat. Als dit niet is ingesteld, is AzureWebJobsSendGridApiKeyde standaardnaam van de app-instelling.
Als u dit wilt doen (Optioneel) Het e-mailadres van de geadresseerde.
Vanaf (Optioneel) Het e-mailadres van de afzender.
Onderwerp (Optioneel) Het onderwerp van het e-mailbericht.
Text (Optioneel) De e-mailinhoud.

Aantekeningen

Met de sendGridOutput-aantekening kunt u de SendGrid-binding declaratief configureren door de volgende configuratiewaarden op te geven.

Configuratie

De volgende tabel bevat de bindingconfiguratie-eigenschappen die beschikbaar zijn in het bestand function.json en het kenmerk/de SendGrid aantekening.

eigenschap function.json Beschrijving
type Moet worden ingesteld op sendGrid.
direction Moet worden ingesteld op out.
name De naam van de variabele die wordt gebruikt in functiecode voor de aanvraag- of aanvraagbody. Deze waarde is $return wanneer er slechts één retourwaarde is.
apiKey De naam van een app-instelling die uw API-sleutel bevat. Als dit niet is ingesteld, is de standaardnaam van de app-instelling AzureWebJobsSendGridApiKey.
to (Optioneel) Het e-mailadres van de geadresseerde.
van (Optioneel) Het e-mailadres van de afzender.
onderwerp (Optioneel) Het onderwerp van het e-mailbericht.
tekst (Optioneel) De e-mailinhoud.

Optionele eigenschappen hebben mogelijk standaardwaarden gedefinieerd in de binding en kunnen programmatisch worden toegevoegd of overschreven.

Wanneer u lokaal ontwikkelt, voegt u uw toepassingsinstellingen toe aan het local.settings.json-bestand in de Values verzameling.

host.json-instellingen

In deze sectie worden de configuratie-instellingen beschreven die beschikbaar zijn voor deze binding in versie 2.x en hoger. Instellingen in het bestand host.json van toepassing op alle functies in een exemplaar van een functie-app. Het onderstaande voorbeeld host.json bestand bevat alleen de instellingen voor versie 2.x+ voor deze binding. Zie host.json naslaginformatie voor Azure Functions voor meer informatie over configuratie-instellingen voor functie-apps in versies 2.x en latere versies.

{
    "version": "2.0",
    "extensions": {
        "sendGrid": {
            "from": "Azure Functions <samples@functions.com>"
        }
    }
}
Eigenschappen Standaard Beschrijving
van N.v.t. Het e-mailadres van de afzender in alle functies.

Volgende stappen