Saltar al contenido principal

Configura una Action de proveedor de correo electrónico con el Auth0 Dashboard

Para usar el Auth0 Dashboard para configurar tu inquilino con una Action personalizada de proveedor de correo electrónico:
  1. Ve a Auth0 Dashboard > Branding > Email Provider.
  2. Activa el interruptor Use my own email provider.
  3. En la sección Email Provider, selecciona Custom Provider.
  4. En el campo From, introduce la dirección de correo electrónico predeterminada desde la que se enviarán los correos.
  5. En el editor de código, escribe el código de tu Action para enviar mensajes a tu proveedor de correo electrónico. Consulta la documentación de tu proveedor sobre su API o los detalles de la conexión SMTP. En el menú izquierdo del editor de código, puedes hacer clic en el icono de la llave para añadir Secrets (por ejemplo, para autenticarte con una API) y en el recuadro para añadir dependencias.
  6. Cuando termines de escribir la Action, haz clic en Save para implementarla.
Para probar la configuración, haz clic en Send Test Email. Al igual que otras Actions, puedes usar la Management API para administrar la Action y sus versiones. Todas las Actions están sujetas a las mismas limitaciones.

Configurar una Action de proveedor de correo electrónico con Terraform

El proveedor de Auth0 para Terraform usa la Auth0 Management API para realizar acciones en la plataforma Auth0. Puede usar el proveedor de Auth0 para Terraform para crear una Action personalizada de proveedor de correo electrónico y configurar su inquilino para usarla.

1. Desvincule o elimine las Actions en conflicto

Puede tener como máximo una Action vinculada al desencadenador custom-email-provider. Si su inquilino ya está configurado con una Action de proveedor de correo electrónico personalizada, restablézcala antes de crear una nueva Action de proveedor de correo electrónico con Terraform:
  1. Vaya a Auth0 Dashboard > Branding > Email Provider.
  2. En la sección Email Provider, haga clic en Custom Provider.
  3. Debajo del editor de código de Actions, haga clic en Reset.
Puede comprobar si tiene otras Actions desplegadas vinculadas al desencadenador custom-email-provider mediante la Management API:
  1. Enumere sus Actions para identificar cualquier Action duplicada.
  2. Actualice sus vinculaciones del desencadenador o elimine las Actions.

2. Cree una nueva Action de proveedor de correo electrónico

Use el recurso auth0_action de Terraform para crear una Action compatible con el desencadenador custom-email-provider. Establezca deploy = true para crear de inmediato una nueva versión de la Action.
resource "auth0_action" "custom_email_provider" {
  name    = "Custom Email Provider"
  runtime = "node20"
  deploy  = true
  code    = <<-EOT
    /**
    * Controlador que se ejecuta al enviar una notificación por correo electrónico
    * @param {Event} event - Detalles sobre el usuario y el contexto en el que está iniciando sesión.
    * @param {CustomEmailProviderAPI} api - Métodos y utilidades para modificar el comportamiento del envío de una notificación por correo electrónico.
    */
    exports.onExecuteCustomEmailProvider = async (event, api) => {
      // El código va aquí
      return;
    };
  EOT
  supported_triggers {
    id      = "custom-email-provider"
    version = "v1"
  }
}
En el esqueleto de la función, escriba el código de su Action para enviar mensajes a su proveedor de correo electrónico. Consulte la documentación de su proveedor sobre su API o los detalles de su servidor SMTP.

3. Vincule la Action al desencadenador del proveedor de correo electrónico

Use el recurso auth0_trigger_action de Terraform para vincular la Action al desencadenador custom-email-provider:
resource "auth0_trigger_action" "custom_email_provider" {
  trigger = "custom-email-provider"
  actions {
    id           = auth0_action.custom_email_provider.id
    display_name = auth0_action.custom_email_provider.name
  }
   depends_on = [
    auth0_action.custom_email_provider
  ]
 }

4. Configura el proveedor de correo electrónico de tu inquilino mediante la Action

Usa el recurso de Terraform auth0_email_provider para configurar tu inquilino para que use la Action de proveedor de correo electrónico:
resource "auth0_email_provider" "custom_email_provider" {
  name                 = "custom"
  enabled              = true
  default_from_address = "accounts@example.com"
  credentials {}
  depends_on = [
    auth0_trigger_actions.custom_email_provider
  ]
Si crea una nueva Action de proveedor de correo electrónico con Terraform y no surte efecto, es posible que ya tuviera una Action desplegada vinculada al desencadenador custom-email-provider. Para solucionar y corregir este problema, siga el primer paso de este artículo para desvincular o eliminar las Actions en conflicto.

Ejemplo de Action de proveedor de correo electrónico

Este es un ejemplo de Action para el desencadenador custom-email-provider. En este ejemplo de código, la función onExecuteCustomEmailProvider recibe dos argumentos del objeto de evento de custom-email-provider: event, que contiene información sobre el usuario y el contexto de la notificación, y api, que proporciona métodos auxiliares para personalizar el comportamiento al enviar notificaciones.
/**
 * Controlador que se ejecuta al enviar una notificación por correo electrónico.
 * @param {Event} event - Detalles sobre el usuario y el contexto en el que está iniciando sesión.
 * @param {CustomEmailProviderAPI} api - Métodos y utilidades para modificar el comportamiento del envío de notificaciones por correo electrónico.
 */
exports.onExecuteCustomEmailProvider = async (event, api) => {
  // Definir la carga útil del correo electrónico
  const emailPayload = {
    from: {
      name: "Test Sender",
      email: "sender@example.com"
    },
    to: [{ email: event.user.email }],
    subject: event.notification.message_type,
    html: event.notification.html,
    text: event.notification.text,
  };
  try {
    // Realizar la llamada a la API para enviar el correo electrónico
    const response = await fetch('https://api.example.com/send-email', {
      method: 'POST',
      headers: {
        'Authorization': `Bearer ${event.secrets.api_key}`,
        'Content-Type': 'application/json',
      },
      body: JSON.stringify(emailPayload),
    });
    if (response.ok) {
      console.log('Email sent successfully');
    } else if (response.status >= 500) {
      api.notification.retry(
        `Internal Server Error received from Messaging Proxy. Status code: ${response.status}.`
      );
      return;
    }
  } catch (error) {
    console.error(`Error sending email: ${error.message}`);
    api.notification.drop(`An unexpected error occurred. Error: ${error.message}`);
  }
  return;
};
Para obtener más información sobre Actions, consulta Comprende cómo funcionan las Actions de Auth0.