Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
En este artículo se explica cómo enviar correo electrónico mediante enlaces de SendGrid en Azure Functions. Azure Functions admite un enlace de salida para SendGrid.
Esta es la información de referencia para desarrolladores de Azure Functions. Si está familiarizado con Azure Functions, comience con los siguientes recursos:
Referencias para desarrolladores de C#:
Conceptos básicos sobre los enlaces y desencadenadores de Azure Functions
Codificación y comprobación de Azure Functions en un entorno local
Instalación de la extensión
El paquete NuGet de la extensión que instale depende del modo de C# que esté usando en la aplicación de funciones:
Las funciones se ejecutan en un proceso de trabajo de C# aislado. Para más información, consulte Guía para ejecutar C# Azure Functions en un proceso de trabajo aislado.
La funcionalidad de la extensión varía en función de la versión de la extensión:
Agregue la extensión al proyecto instalando el paquete NuGet, versión 3.x.
Instalación de la agrupación
Para poder usar esta extensión de enlace en la aplicación, asegúrese de que el archivo host.json en la raíz del proyecto contiene esta extensionBundle referencia:
{
"version": "2.0",
"extensionBundle": {
"id": "Microsoft.Azure.Functions.ExtensionBundle",
"version": "[4.0.0, 5.0.0)"
}
}
En este ejemplo, el version valor de [4.0.0, 5.0.0) indica al host de Functions que use una versión de agrupación que sea al menos 4.0.0 pero menor 5.0.0que , que incluye todas las versiones potenciales de 4.x. Esta notación mantiene eficazmente la aplicación en la versión secundaria más reciente disponible del paquete de extensiones v4.x.
Cuando sea posible, debe usar la versión principal del paquete de extensiones más reciente y permitir que el tiempo de ejecución mantenga automáticamente la versión secundaria más reciente. Puede ver el contenido de la agrupación más reciente en la página de versión de paquetes de extensiones. Para más información, consulte Paquetes de extensiones de Azure Functions.
Example
Puede crear una función de C# mediante uno de los siguientes modos de C#:
- Modelo de trabajo aislado: función compilada en C# que se ejecuta en un proceso trabajador aislado del tiempo de ejecución. Se requiere un proceso de trabajo aislado para admitir funciones de C# que se ejecutan en versiones de soporte técnico a largo plazo (LTS) y no LTS para .NET y .NET Framework.
- Modelo en proceso: función de C# compilada que se ejecuta en el mismo proceso que el tiempo de ejecución de Azure Functions.
- Script de C#: se usa principalmente al crear funciones de C# en Azure Portal.
Important
El soporte técnico del modelo en proceso finalizará el 10 de noviembre de 2026. Se recomienda encarecidamente migrar las aplicaciones al modelo de trabajo aislado para obtener soporte técnico completo.
Actualmente no tenemos un ejemplo para usar el enlace de SendGrid en una aplicación de funciones que se ejecuta en un proceso de trabajo aislado.
En el ejemplo siguiente se muestra un enlace de salida de SendGrid en un archivo function.json y una función de JavaScript que usa el enlace.
Estos son los datos de enlace del archivo function.json :
{
"bindings": [
{
"name": "$return",
"type": "sendGrid",
"direction": "out",
"apiKey" : "MySendGridKey",
"to": "{ToEmail}",
"from": "{FromEmail}",
"subject": "SendGrid output bindings"
}
]
}
En la sección de configuración se explican estas propiedades.
Este es el código de 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;
};
Los ejemplos completos de PowerShell no están disponibles actualmente para los enlaces de SendGrid.
En el ejemplo siguiente se muestra una función desencadenada por HTTP que envía un correo electrónico mediante el enlace de SendGrid. Puede proporcionar valores predeterminados en la configuración del enlace. Por ejemplo , desde la dirección de correo electrónico se configura en 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 siguiente función muestra cómo puede proporcionar valores personalizados para propiedades opcionales.
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")
En el ejemplo siguiente se usa la anotación @SendGridOutput de la biblioteca en tiempo de ejecución de funciones de Java para enviar un correo electrónico mediante el enlace de salida de 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();
}
}
Attributes
Las bibliotecas de C# del proceso de trabajo en proceso y aislado usan atributos para definir el enlace de salida. El script de C#, en su lugar, usa un archivo de configuración function.json.
En las aplicaciones de funciones que están en un proceso de trabajo aislado, SendGridOutputAttribute admite los parámetros siguientes:
| Propiedad Attribute/annotation | Description |
|---|---|
| ApiKey | El nombre de una configuración de aplicación que contiene la clave de API. Si no está establecido, el nombre predeterminado de la configuración de aplicación es AzureWebJobsSendGridApiKey. |
| To | (Opcional) Dirección de correo electrónico del destinatario. |
| From | (Opcional) Dirección de correo electrónico del remitente. |
| Subject | (Opcional) Asunto del correo electrónico. |
| Text | (Opcional) Contenido del correo electrónico. |
Annotations
La anotación SendGridOutput permite configurar mediante declaración el enlace de SendGrid proporcionando los siguientes valores de configuración.
Configuration
En la tabla siguiente se enumeran las propiedades de configuración de enlace disponibles en el archivo function.json y el SendGrid atributo o anotación.
| Propiedad de function.json | Description |
|---|---|
| type | Se debe establecer en sendGrid. |
| direction | Se debe establecer en out. |
| name | El nombre de variable que se usa en el código de función para la solicitud o el cuerpo de la solicitud. Este valor es $return cuando solo hay un valor devuelto. |
| apiKey | El nombre de una configuración de aplicación que contiene la clave de API. Si no se establece, el nombre de configuración de la aplicación predeterminado es AzureWebJobsSendGridApiKey. |
| to | (Opcional) Dirección de correo electrónico del destinatario. |
| from | (Opcional) Dirección de correo electrónico del remitente. |
| subject | (Opcional) Asunto del correo electrónico. |
| text | (Opcional) Contenido del correo electrónico. |
Las propiedades opcionales pueden tener valores predeterminados definidos en el enlace y agregarse o reemplazarse mediante programación.
Al desarrollar localmente, agregue la configuración de la aplicación en el archivolocal.settings.json de la Values colección.
configuración de host.json
En esta sección se describen las opciones de configuración disponibles para este enlace en la versión 2.x y posteriores. La configuración del archivo host.json se aplica a todas las funciones de una instancia de la aplicación de funciones. Para más información sobre las opciones de configuración de la aplicación de funciones, consulte host.json referencia para Azure Functions.
Note
Para obtener una referencia de host.json en Functions 1.x, consulte la referencia de host.json para Azure Functions, versión 1.x.
{
"version": "2.0",
"extensions": {
"sendGrid": {
"from": "Azure Functions <samples@functions.com>"
}
}
}
| Property | Default | Description |
|---|---|---|
| from | n/a | Dirección de correo electrónico del remitente en todas las funciones. |