Associazioni di SendGrid di Funzioni di AzureAzure Functions SendGrid bindings

Questo articolo illustra come inviare messaggi di posta elettronica tramite le associazioni di SendGrid in Funzioni di Azure.This article explains how to send email by using SendGrid bindings in Azure Functions. Funzioni di Azure supporta un'associazione di output per SendGrid.Azure Functions supports an output binding for SendGrid.

Informazioni di riferimento per gli sviluppatori delle Funzioni di Azure.This is reference information for Azure Functions developers. Se non si ha familiarità con le Funzioni di Azure, iniziare con le seguenti risorse:If you're new to Azure Functions, start with the following resources:

Pacchetti: Funzioni 1.xPackages - Functions 1.x

Le associazioni di SendGrid sono incluse nel pacchetto NuGet Microsoft.Azure.WebJobs.Extensions.SendGrid, versione 2.x.The SendGrid bindings are provided in the Microsoft.Azure.WebJobs.Extensions.SendGrid NuGet package, version 2.x. Il codice sorgente del pacchetto si trova nel repository GitHub azure-webjobs-sdk-extensions.Source code for the package is in the azure-webjobs-sdk-extensions GitHub repository.

Nella tabella seguente viene descritto come aggiungere un supporto per questa associazione in ogni ambiente di sviluppo.The following table tells how to add support for this binding in each development environment.

Ambiente di sviluppoDevelopment environment Per aggiungere un supporto inTo add support in
Funzioni 1.xFunctions 1.x
Sviluppo locale - Libreria di classi C#Local development - C# class library Installare il pacchettoInstall the package
Sviluppo locale - Script C#, JavaScript, F#Local development - C# script, JavaScript, F# AutomaticoAutomatic
Sviluppo con il portalePortal development AutomaticoAutomatic

Pacchetti: Funzioni 2.xPackages - Functions 2.x

Le associazioni di SendGrid sono incluse nel pacchetto NuGet Microsoft.Azure.WebJobs.Extensions.SendGrid, versione 3.x.The SendGrid bindings are provided in the Microsoft.Azure.WebJobs.Extensions.SendGrid NuGet package, version 3.x. Il codice sorgente del pacchetto si trova nel repository GitHub azure-webjobs-sdk-extensions.Source code for the package is in the azure-webjobs-sdk-extensions GitHub repository.

Nella tabella seguente viene descritto come aggiungere un supporto per questa associazione in ogni ambiente di sviluppo.The following table tells how to add support for this binding in each development environment.

Ambiente di sviluppoDevelopment environment Per aggiungere un supporto inTo add support in
Funzioni 2.xFunctions 2.x
Sviluppo locale - Libreria di classi C#Local development - C# class library Installare il pacchettoInstall the package
Sviluppo locale - Script C#, JavaScript, F#Local development - C# script, JavaScript, F# Registrare l'estensioneRegister the extension
Sviluppo con il portalePortal development AutomaticoAutomatic

EsempioExample

Vedere l'esempio specifico per ciascun linguaggio:See the language-specific example:

Esempio in C#C# example

L'esempio seguente mostra una funzione C# che usa un trigger della coda del bus di servizio e un'associazione di output SendGrid.The following example shows a C# function that uses a Service Bus queue trigger and a SendGrid output binding.

[FunctionName("SendEmail")]
public static void Run(
    [ServiceBusTrigger("myqueue", Connection = "ServiceBusConnection")] OutgoingEmail email,
    [SendGrid(ApiKey = "CustomSendGridKeyAppSettingName")] out SendGridMessage message)
{
    message = new SendGridMessage();
    message.AddTo(email.To);
    message.AddContent("text/html", email.Body);
    message.SetFrom(new EmailAddress(email.From));
    message.SetSubject(email.Subject);
}

public class OutgoingEmail
{
    public string To { get; set; }
    public string From { get; set; }
    public string Subject { get; set; }
    public string Body { get; set; }
}

È possibile omettere l'impostazione della proprietà ApiKey dell'attributo se si dispone della chiave API in un'impostazione applicazione denominata "AzureWebJobsSendGridApiKey".You can omit setting the attribute's ApiKey property if you have your API key in an app setting named "AzureWebJobsSendGridApiKey".

Esempio di script C#C# script example

L'esempio seguente mostra un'associazione di output di SendGrid in un file function.json e una funzione script C# che usa l'associazione.The following example shows a SendGrid output binding in a function.json file and a C# script function that uses the binding.

Ecco i dati di associazione nel file function.json:Here's the binding data in the function.json file:

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

Queste proprietà sono descritte nella sezione configuration.The configuration section explains these properties.

Ecco il codice script C#:Here's the C# script code:

#r "SendGrid"
using System;
using SendGrid.Helpers.Mail;

public static void Run(TraceWriter log, string input, out Mail message)
{
     message = new Mail
    {        
        Subject = "Azure news"          
    };

    var personalization = new Personalization();
    personalization.AddTo(new Email("recipient@contoso.com"));   

    Content content = new Content
    {
        Type = "text/plain",
        Value = input
    };
    message.AddContent(content);
    message.AddPersonalization(personalization);
}

Esempio JavaScriptJavaScript example

L'esempio seguente mostra un'associazione di output di SendGrid in un file function.json e una funzione JavaScript che usa l'associazione.The following example shows a SendGrid output binding in a function.json file and a JavaScript function that uses the binding.

Ecco i dati di associazione nel file function.json:Here's the binding data in the function.json file:

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

Queste proprietà sono descritte nella sezione configuration.The configuration section explains these properties.

Ecco il codice JavaScript:Here's the 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
        }]
    };

    context.done(null, message);
};

AttributiAttributes

Nelle librerie di classi C# usare l'attributo SendGrid.In C# class libraries, use the SendGrid attribute.

Per informazioni sulle proprietà degli attributi che è possibile configurare, vedere la sezione Configurazione.For information about attribute properties that you can configure, see Configuration. Di seguito è riportato un esempio dell'attributo SendGrid in una firma del metodo:Here's a SendGrid attribute example in a method signature:

[FunctionName("SendEmail")]
public static void Run(
    [ServiceBusTrigger("myqueue", Connection = "ServiceBusConnection")] OutgoingEmail email,
    [SendGrid(ApiKey = "CustomSendGridKeyAppSettingName")] out SendGridMessage message)
{
    ...
}

Per un esempio completo, vedere l'esempio in C#.For a complete example, see C# example.

ConfigurazioneConfiguration

Nella tabella seguente sono illustrate le proprietà di configurazione dell'associazione impostate nel file function.json e nell'attributo SendGrid.The following table explains the binding configuration properties that you set in the function.json file and the SendGrid attribute.

Proprietà di function.jsonfunction.json property Proprietà dell'attributoAttribute property DESCRIZIONEDescription
typetype Obbligatoria. Deve essere impostata su sendGrid.Required - must be set to sendGrid.
directiondirection Obbligatoria. Deve essere impostata su out.Required - must be set to out.
nomename Obbligatoria. Nome della variabile usato nel codice della funzione per la richiesta o il corpo della richiesta.Required - the variable name used in function code for the request or request body. Questo valore è $return quando viene restituito un solo valore.This value is $return when there is only one return value.
apiKeyapiKey ApiKeyApiKey Il nome di un'impostazione dell'app che contiene la chiave API.The name of an app setting that contains your API key. Se non viene impostato, il nome dell'impostazione dell'app predefinita è "AzureWebJobsSendGridApiKey".If not set, the default app setting name is "AzureWebJobsSendGridApiKey".
toto ToTo Indirizzo e-mail del destinatario.the recipient's email address.
fromfrom FromFrom Indirizzo e-mail del mittente.the sender's email address.
subjectsubject OggettoSubject Oggetto del messaggio di posta elettronica.the subject of the email.
texttext TextText Contenuto del messaggio di posta elettronica.the email content.

Quando si sviluppa in locale, le impostazioni dell'app vengono inserite nel file local.settings.json.When you're developing locally, app settings go into the local.settings.json file.

Passaggi successiviNext steps