Associações do SendGrid no Azure Functions
Este artigo explica como enviar emails usando as associações de SendGrid no Azure Functions. O Azure Functions suporta uma associação de saída para o SendGrid.
Essas são as informações de referência para desenvolvedores do Azure Functions. Se for novo no Azure Functions, comece com os seguintes recursos:
Referências para desenvolvedores C#:
Instalar a extensão
O pacote NuGet da extensão instalado depende do modo C# usado no aplicativo de funções:
As funções são executadas em um processo de trabalho do C# isolado. Para saber mais, confira o Guia para executar C# do Azure Functions em um processo de trabalho isolado.
A funcionalidade da extensão varia de acordo com a versão da extensão:
Adicione a extensão ao seu projeto instalando o pacote NuGet, versão 3.x.
Instalar pacote
A partir da versão Funções 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, confira pacotes de extensão.
Esta versão da extensão já deve estar disponível para seu aplicativo de funções com o pacote de extensão na versão 2.x.
Exemplo
A função C# pode ser criada por meio de um dos seguintes modos C#:
- Modelo de trabalho isolado: função C# compilada executada em um processo de trabalho que está isolado do runtime. É necessário um processo de trabalho isolado para dar suporte às funções C# executadas nas versões LTS e não LTS do .NET e do .NET Framework.
- Modelo em processo: função C# compilada no mesmo processo que o runtime do Functions.
- Script C#: usado principalmente ao criar funções C# no portal do Azure.
Importante
O suporte terminará para o modelo em processo em 10 de novembro de 2026. É altamente recomendável migrar seus aplicativos para o modelo de trabalho isolado para obter suporte completo.
Atualmente, não há um exemplo para usar a associação SendGrid em um aplicativo de funções em execução em um processo de trabalho isolado.
O exemplo a seguir mostra uma associação de saída de SendGrid em um arquivo function.json e uma função JavaScript que usa a associação.
Aqui estão os dados de associaçã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 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 disponíveis atualmente para as associações do SendGrid.
O exemplo a seguir mostra uma função disparada por HTTP que envia um email usando a associação SendGrid. Você pode fornecer valores padrão na configuração da associação. Por exemplo, o endereço de email de origem é 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 anotação @SendGridOutput
da @SendGridOutput
para enviar um email usando a associaçã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
Ambas as bibliotecas C# em processo e no processo de trabalho isolado usam atributos para definir a associação de saída. Em vez disso, o script C# usa um arquivo de configuração function.json.
Em aplicativos de funções do processo de trabalho isolado, o SendGridOutputAttribute
dá suporte para os seguintes parâmetros:
Propriedade de atributo/anotação | Descrição |
---|---|
ApiKey | O nome de uma configuração de aplicativo que contém sua chave de API. Se não estiver configurado, o nome da configuração do aplicativo padrão será AzureWebJobsSendGridApiKey . |
Para | (Opcional) Insira o endereço de email do destinatário. |
De | (Opcional) Insira o endereço de email do remetente. |
Assunto | (Opcional) Insira o assunto do email. |
Texto | (Opcional) O conteúdo do email. |
Anotações
A anotação SendGridOutput permite configurar declarativamente a associação SendGrid fornecendo os valores de configuração a seguir.
Configuração
A tabela a seguir lista as propriedades de configuração de associação disponíveis no arquivo function.json e no atributo/na anotação SendGrid
.
Propriedade function.json | Descrição |
---|---|
tipo | Deve ser definido como sendGrid . |
direction | Deve ser definido como out . |
name | O nome da variável usada no código da função para a solicitação ou o corpo da solicitação. Esse valor é $return quando há apenas um valor retornado. |
apiKey | O nome de uma configuração de aplicativo que contém sua chave de API. Se não configurado, o nome da configuração do aplicativo padrão será AzureWebJobsSendGridApiKey. |
to | (Opcional) Insira o endereço de email do destinatário. |
from | (Opcional) Insira o endereço de email do remetente. |
subject | (Opcional) Insira o assunto do email. |
text | (Opcional) O conteúdo do email. |
As propriedades opcionais podem ter valores padrão definidos na associação e podem ser adicionadas ou substituídas programaticamente.
Quando você estiver desenvolvendo localmente, adicione as configurações do aplicativo no arquivo local.settings.json na coleção Values
.
configurações de host.json
Esta seção descreve as definições de configuração disponíveis para a 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 do aplicativo de funções. O arquivo host.json de exemplo abaixo contém apenas as configurações das versões 2.x e superiores para a associação. Para saber mais sobre as definições de configuração do aplicativo de funções nas versões 2.x e superiores, confira a referência de host.json para o Azure Functions.
Observação
Para obter uma referência de host.json no Functions 1.x, confira Referência de host.json para o Azure Functions 1.x.
{
"version": "2.0",
"extensions": {
"sendGrid": {
"from": "Azure Functions <samples@functions.com>"
}
}
}
Propriedade | Padrão | Descrição |
---|---|---|
from | N/D | Endereço de email do remetente em todas as funções. |