Associações do Azure Functions SendGrid

Este artigo explica como enviar email usando associações do SendGrid no Azure Functions. O Azure Functions dá suporte a uma associação de saída para SendGrid.

Estas são informações de referência para desenvolvedores do Azure Functions. Se você é novo no Azure Functions, comece com os seguintes recursos:

Instalar a extensão

O pacote de extensão NuGet que você instala depende do modo C# que você está usando em seu aplicativo de função:

As funções são executadas em um processo de trabalho C# isolado. Para saber mais, consulte Guia para executar o C# Azure Functions em um processo de trabalho isolado.

A funcionalidade da extensão varia dependendo da versão da extensão:

Adicione a extensão ao seu projeto instalando o pacote NuGet, versão 3.x.

Instalar pacote

A partir do Functions versão 2.x, a extensão HTTP faz parte de um pacote de extensão, que é especificado no arquivo de projeto host.json. Para saber mais, consulte Pacote de extensão.

Esta versão da extensão já deve estar disponível para o seu aplicativo de função com pacote de extensão, versão 2.x.

Exemplo

Uma função C# pode ser criada usando um dos seguintes modos C#:

  • Modelo de trabalho isolado: função C# compilada que é executada em um processo de trabalho isolado do tempo de execução. O processo de trabalho isolado é necessário para suportar funções C# em execução nas versões LTS e não-LTS .NET e .NET Framework.
  • Modelo em processo: função C# compilada que é executada no mesmo processo que o tempo de execução do Functions.
  • Script C#: usado principalmente quando você cria funções C# no portal do Azure.

Importante

O suporte para o modelo em processo terminará em 10 de novembro de 2026. É altamente recomendável que você migre seus aplicativos para o modelo de trabalho isolado para obter suporte total.

Atualmente, não temos um exemplo para usar a associação SendGrid em um aplicativo de função em execução em um processo de trabalho isolado.

O exemplo a seguir mostra uma ligação de saída SendGrid em um arquivo function.json e uma função JavaScript que usa a ligação.

Aqui estão os dados de ligação no arquivo function.json :

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

A seção de configuração explica essas propriedades.

Aqui está o código 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;
};

Exemplos completos do PowerShell não estão atualmente disponíveis para associações do SendGrid.

O exemplo a seguir mostra uma função acionada por HTTP que envia um email usando a associação SendGrid. Você pode fornecer valores padrão na configuração de vinculação. Por exemplo, o endereço de e-mail de origem está configurado em 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"
    }
  ]
}

A função a seguir mostra como você pode fornecer valores personalizados para propriedades opcionais.

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

O exemplo a seguir usa a @SendGridOutput anotação da biblioteca de tempo de execução de funções Java para enviar um e-mail usando a ligação de saída 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();
    }
}

Atributos

As bibliotecas C# do processo de trabalho em processo e isoladas usam atributos para definir a ligação de saída. Em vez disso, o script C# usa um arquivo de configuração function.json.

Em aplicativos de função de processo de trabalho isolados, o SendGridOutputAttribute suporta os seguintes parâmetros:

Propriedade Atributo/anotação Description
ApiKey O nome de uma configuração de aplicativo que contém sua chave de API. Se não estiver definido, o nome da configuração padrão do aplicativo será AzureWebJobsSendGridApiKey.
De (Opcional) O endereço de e-mail do destinatário.
De (Opcional) O endereço de e-mail do remetente.
Assunto (Opcional) O assunto do e-mail.
Texto (Opcional) O conteúdo do e-mail.

Anotações

A anotação SendGridOutput permite configurar declarativamente a associação SendGrid fornecendo os seguintes valores de configuração.

Configuração

A tabela a seguir lista as propriedades de configuração de associação disponíveis no arquivo function.json e no SendGrid atributo/anotação.

function.json propriedade Description
type Deve ser definido como sendGrid.
direção Deve ser definido como out.
Designação O nome da variável usado no código de função para a solicitação ou corpo da solicitação. Esse valor é $return quando há apenas um valor de retorno.
apiKey O nome de uma configuração de aplicativo que contém sua chave de API. Se não estiver definido, o nome da configuração padrão do aplicativo será AzureWebJobsSendGridApiKey.
to (Opcional) O endereço de e-mail do destinatário.
from (Opcional) O endereço de e-mail do remetente.
subject (Opcional) O assunto do e-mail.
texto (Opcional) O conteúdo do e-mail.

As propriedades opcionais podem ter valores padrão definidos na associação e adicionados ou substituídos programaticamente.

Quando estiver desenvolvendo localmente, adicione as configurações do aplicativo no arquivo local.settings.json na Values coleção.

host.json configurações

Esta seção descreve as definições de configuração disponíveis para essa associação nas versões 2.x e superiores. As configurações no arquivo host.json se aplicam a todas as funções em uma instância de aplicativo de função. O exemplo host.json arquivo abaixo contém apenas as configurações da versão 2.x+ para essa ligação. Para obter mais informações sobre definições de configuração de aplicativo de função nas versões 2.x e versões posteriores, consulte host.json referência para o Azure Functions.

Nota

Para obter uma referência de host.json no Functions 1.x, consulte host.json referência do Azure Functions 1.x.

{
    "version": "2.0",
    "extensions": {
        "sendGrid": {
            "from": "Azure Functions <samples@functions.com>"
        }
    }
}
Property Predefinição Description
from n/d O endereço de e-mail do remetente em todas as funções.

Próximos passos