> ## Documentation Index
> Fetch the complete documentation index at: https://translations.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Configurar un proveedor de correo electrónico con una Action personalizada

> Escriba una Action que envíe mensajes a su proveedor de correo electrónico desde Auth0 Dashboard o el proveedor de Auth0 para Terraform, e implemente lógica personalizada para su caso de uso.

<div id="configure-an-email-provider-action-using-the-auth0-dashboard">
  ## Configura una Action de proveedor de correo electrónico con el Auth0 Dashboard
</div>

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](https://manage.auth0.com/#/templates/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](https://auth0.com/docs/api/management/v2/actions/get-actions) para administrar la Action y sus [versiones](/es/docs/customize/actions/manage-versions). Todas las Actions están sujetas a las mismas [limitaciones](/es/docs/customize/actions/limitations).

<div id="configure-an-email-provider-action-using-terraform">
  ## Configurar una Action de proveedor de correo electrónico con Terraform
</div>

El [proveedor de Auth0 para Terraform](https://registry.terraform.io/providers/auth0/auth0/latest/docs) usa la [Auth0 Management API](https://auth0.com/docs/api/management/v2) 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.

<div id="1-unbind-or-delete-conflicting-actions">
  ### 1. Desvincule o elimine las Actions en conflicto
</div>

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](https://manage.auth0.com/#/templates/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](https://auth0.com/docs/api/management/v2/actions/get-actions) para identificar cualquier Action duplicada.
2. [Actualice sus vinculaciones del desencadenador](https://auth0.com/docs/api/management/v2/actions/patch-bindings) o [elimine las Actions](https://auth0.com/docs/api/management/v2/actions/delete-action).

<div id="2-create-a-new-email-provider-action">
  ### 2. Cree una nueva Action de proveedor de correo electrónico
</div>

Use el [recurso `auth0_action` de Terraform](https://registry.terraform.io/providers/auth0/auth0/latest/docs/resources/action) 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.

```terraform lines theme={null}
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.

<div id="3-bind-the-action-to-the-email-provider-trigger">
  ### 3. Vincule la Action al desencadenador del proveedor de correo electrónico
</div>

Use el [recurso `auth0_trigger_action` de Terraform](https://registry.terraform.io/providers/auth0/auth0/latest/docs/resources/trigger_action) para vincular la Action al desencadenador `custom-email-provider`:

```terraform lines theme={null}
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
  ]
 }
```

<div id="4-configure-your-tenants-email-provider-with-the-action">
  ### 4. Configura el proveedor de correo electrónico de tu inquilino mediante la Action
</div>

Usa el [recurso de Terraform `auth0_email_provider`](https://registry.terraform.io/providers/auth0/auth0/latest/docs/resources/email_provider) para configurar tu inquilino para que use la Action de proveedor de correo electrónico:

```terraform lines theme={null}
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](#1-unbind-or-delete-conflicting-actions).

<div id="example-email-provider-action">
  ## Ejemplo de Action de proveedor de correo electrónico
</div>

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`](/es/docs/customize/email/configure-a-custom-email-provider/action-triggers-custom-email-provider-event-object): `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.

```javascript lines expandable theme={null}
/**
 * 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](/es/docs/customize/actions/actions-overview).
