Liaisons SendGrid dans Azure Functions

Cet article explique comment envoyer des e-mails avec des liaisons SendGrid dans Azure Functions. Azure Functions prend en charge une liaison de sortie pour SendGrid.

Il s’agit des informations de référence pour les développeurs Azure Functions. Si vous ne connaissez pas bien Azure Functions, commencez par consulter les ressources suivantes :

Installer l’extension

Le package NuGet de l’extension que vous installez dépend du mode C# que vous utilisez dans votre application de fonction :

Les fonctions s’exécutent dans un processus de travail C# isolé. Pour en savoir plus, consultez Guide pour l’exécution d’Azure Functions C# dans un processus Worker isolé.

La fonctionnalité de l’extension varie en fonction de la version de l’extension :

Ajoutez l’extension à votre projet en installant le package NuGet, version 3.x.

Installer le bundle

À partir de Functions version 2.x, l’extension HTTP fait partie d’une offre groupée d’extension, qui est spécifiée dans votre fichier projet host.json. Pour plus d’informations, consultez le bundle d’extensions.

Cette version de l’extension doit déjà être disponible pour votre application de fonction avec une offre groupée d’extension, version 2.x.

Exemple

Une fonction C# peut être créée à l’aide de l’un des modes C# suivants :

  • Modèle worker isolé : fonction C# compilée exécutée dans un processus worker isolé du runtime. Le processus Worker isolé est requis pour prendre en charge les fonctions C# exécutées sur les versions LTS et non-LTS de .NET et de .NET Framework.
  • Modèle In-process : fonction C# compilée exécutée dans le même processus que le runtime Functions.
  • Script C# : principalement utilisé lors de la création de fonctions C# dans le portail Azure.

Important

La prise en charge du modèle in-process prendra fin le 10 novembre 2026. Pour continuer à bénéficier d’une prise en charge complète, nous vous recommandons vivement de migrer vos applications vers le modèle Worker isolé.

Nous n’avons actuellement aucun exemple d’utilisation de la liaison SendGrid dans une application de fonction s’exécutant dans un processus Worker isolé.

L’exemple suivant montre une liaison de sortie SendGrid dans un fichier function.json et une fonction JavaScript qui utilise la liaison.

Voici les données de liaison dans le fichier function.json :

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

La section configuration décrit ces propriétés.

Voici le code JavaScript :

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

Aucun exemple PowerShell complet n'est actuellement disponible pour les liaisons SendGrid.

L’exemple suivant montre une fonction déclenchée par HTTP qui envoie un e-mail à l’aide de la liaison SendGrid. Vous pouvez fournir des valeurs par défaut dans la configuration de la liaison. Par exemple, l’adresse e-mail de l’expéditeur est configurée dans 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"
    }
  ]
}

La fonction suivante montre comment vous pouvez fournir des valeurs personnalisées pour des propriétés facultatives.

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

L’exemple suivant utilise l’annotation @SendGridOutput de la bibliothèque du runtime des fonctions Java pour envoyer un e-mail à l’aide de la liaison de sortie 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();
    }
}

Attributs

Les bibliothèques C# In-process et de processus Worker isolé utilisent des attributs pour définir la liaison de sortie. Le script C# utilise à la place un fichier config function.json.

Dans les applications de fonction de processus Worker isolé, SendGridOutputAttribute prend en charge les paramètres suivants :

Propriété d’attribut/annotation Description
ApiKey Nom d’un paramètre d’application qui contient votre clé API. S’il n’est pas défini, le nom par défaut du paramètre d’application est AzureWebJobsSendGridApiKey.
To (Facultatif) Adresse e-mail du destinataire.
From (Facultatif) Adresse e-mail de l’expéditeur.
Subject (Facultatif) Objet de l’e-mail.
Texte (Facultatif) Contenu de l’e-mail.

Annotations

L’annotation SendGridOutput vous permet de configurer de manière déclarative la liaison SendGrid en fournissant les valeurs de configuration suivantes.

Configuration

Le tableau suivant liste les propriétés de configuration de liaison qui sont disponibles dans le fichier function.json et dans l’attribut/annotation SendGrid :

Propriété function.json Description
type Cette propriété doit être définie sur sendGrid.
direction Cette propriété doit être définie sur out.
name Nom de variable utilisé dans le code de la fonction pour la requête ou le corps de la requête. Cette valeur est $return lorsqu’il n’existe qu’une valeur de retour.
apiKey Nom d’un paramètre d’application qui contient votre clé API. En l’absence de définition, le nom du paramètre d’application par défaut est AzureWebJobsSendGridApiKey.
to (Facultatif) Adresse e-mail du destinataire.
from (Facultatif) Adresse e-mail de l’expéditeur.
subject (Facultatif) Objet de l’e-mail.
text (Facultatif) Contenu de l’e-mail.

Les propriétés facultatives peuvent avoir des valeurs par défaut qui sont définies dans la liaison, et qui sont soit ajoutées, soit remplacées programmatiquement.

Lorsque vous développez en local, ajoutez vos paramètres d’application dans le fichier local.settings.json de la collection Values.

Paramètres host.json

Cette section décrit les paramètres de configuration disponibles pour cette liaison dans les versions 2.x et ultérieures. Les paramètres dans le fichier host.json s’appliquent à toutes les fonctions dans une instance de l’application de fonction. L’exemple de fichier host.json ci-dessous contient seulement les paramètres des versions 2.x et ultérieures pour cette liaison. Pour plus d’informations sur les paramètres de configuration de l’application de fonction dans les versions 2.x et ultérieures, consultez Référence host.json pour Azure Functions.

Notes

Pour obtenir une référence de host.json dans Functions 1.x, consultez Informations de référence sur le fichier host.json pour Azure Functions 1.x.

{
    "version": "2.0",
    "extensions": {
        "sendGrid": {
            "from": "Azure Functions <samples@functions.com>"
        }
    }
}
Propriété Default Description
from n/a Adresse e-mail de l’expéditeur dans toutes les fonctions.

Étapes suivantes