Usando la extensión Trigger Email

La extensión Trigger Email ( firestore-send-email ) le permite enviar automáticamente correos electrónicos basados ​​en documentos de una colección de Cloud Firestore. Agregar un documento a la colección activa esta extensión para enviar un correo electrónico creado a partir de los campos del documento. Los campos de nivel superior del documento especifican el remitente y los destinatarios del correo electrónico, incluidas las opciones to , cc y bcc (cada una de las cuales admite UID). El campo message del documento especifica los otros elementos del correo electrónico, como la línea de asunto y el cuerpo del correo electrónico (ya sea texto sin formato o HTML).

Aquí hay un ejemplo básico de escritura de documento que activaría esta extensión:

admin.firestore().collection('mail').add({
  to: 'someone@example.com',
  message: {
    subject: 'Hello from Firebase!',
    html: 'This is an <code>HTML</code> email body.',
  },
})

Opcionalmente, también puede configurar esta extensión para representar correos electrónicos utilizando plantillas de manillar .

Configuración previa a la instalación

Antes de instalar la extensión, complete estos pasos:

  1. Configure su servicio de correo saliente.

    Cuando instale la extensión Trigger Email, deberá especificar los detalles de conexión y autenticación de un servidor SMTP, que la extensión utiliza para enviar correos electrónicos. Por lo general, esto lo proporciona un servicio de entrega de correo electrónico como Sendgrid, Mailgun o Mailchimp Transactional Email, pero también podría ser un servidor que usted mismo ejecute.

  2. Cree una colección de documentos de correo electrónico.

    La extensión Trigger Email escucha nuevos documentos en una colección de Cloud Firestore que usted especifique. Cuando encuentra un documento nuevo, la extensión envía un correo electrónico según los campos del documento. Puedes utilizar cualquier colección de Cloud Firestore para este fin; Los ejemplos de esta página utilizan una colección denominada email .

  3. Configure reglas de seguridad para su colección de documentos de correo electrónico.

    Esta extensión se puede utilizar para activar la entrega de correo electrónico directamente desde las aplicaciones cliente. Sin embargo, debe controlar cuidadosamente el acceso de los clientes a la colección para evitar posibles abusos (¡no desea que los usuarios puedan enviar correos electrónicos arbitrarios desde la dirección de su empresa!).

    Las reglas de seguridad variarán de una aplicación a otra, pero siempre debes asegurarte de que los correos electrónicos se envíen solo a los destinatarios previstos y que el contenido de formato libre se mantenga al mínimo. Las plantillas pueden ayudar aquí: puede usar reglas de seguridad para verificar que los datos que se completan en la plantilla coincidan con sus expectativas sobre lo que se le debe permitir activar a un usuario.

  4. Opcional: configure una colección de usuarios.

    En el uso básico de esta extensión, usted especifica los destinatarios de un correo electrónico especificando sus direcciones de correo electrónico en los campos to , cc y bcc del documento del mensaje. Como alternativa, si tiene una base de datos de usuarios en Cloud Firestore, puede especificar destinatarios utilizando los UID de los usuarios. Para que esto funcione, su colección de usuarios debe cumplir estos criterios:

    • La colección debe estar codificada en ID de usuario. Es decir, el ID de cada documento de usuario de la colección debe ser el UID de autenticación de Firebase del usuario.
    • Cada documento de usuario debe tener un campo email que contenga la dirección de correo electrónico del usuario.
  5. Opcional: configure una colección de plantillas.

    Puede renderizar correos electrónicos utilizando plantillas de manillar . Para hacerlo, necesitará una colección de Cloud Firestore que contenga sus plantillas.

    Consulte Usar plantillas de manillar con la extensión Trigger Email para obtener más detalles.

Instalar la extensión

Para instalar la extensión, siga los pasos en la página Instalar una extensión de Firebase . En resumen, haga una de las siguientes cosas:

  • Consola Firebase: haga clic en el siguiente botón:

    Instale la extensión Trigger Email

  • CLI: ejecute el siguiente comando:

    firebase ext:install firebase/firestore-send-email --project=projectId-or-alias

Cuando instale la extensión, se le pedirá que especifique la información de su conexión SMTP y las colecciones de Cloud Firestore que configuró anteriormente.

Usa la extensión

Después de la instalación, esta extensión monitorea todas las escrituras de documentos en la colección que configuró. El correo electrónico se entrega según el contenido de los campos del documento. Los campos de nivel superior especifican el remitente y los destinatarios del correo electrónico. El campo message contiene los detalles del correo electrónico a entregar, incluido el cuerpo del correo electrónico.

Ejemplo: enviar un correo electrónico

Para enviar un mensaje simple, agregue un documento a su colección de mensajes con un campo to y un campo message con el siguiente contenido:

to: ['someone@example.com'],
message: {
  subject: 'Hello from Firebase!',
  text: 'This is the plaintext section of the email body.',
  html: 'This is the <code>HTML</code> section of the email body.',
}

Campos de remitente y destinatario

Los campos de nivel superior del documento proporcionan la información del remitente y del destinatario del correo electrónico. Los campos disponibles son:

  • de: la dirección de correo electrónico del remitente. Si no se especifica en el documento, utiliza el parámetro configurado "Dirección DESDE" configurado.
  • responder a: la dirección de correo electrónico de respuesta. Si no se especifica en el documento, utiliza el parámetro "Dirección de RESPUESTA predeterminada" configurado.
  • a: una dirección de correo electrónico de un único destinatario o una matriz que contiene varias direcciones de correo electrónico de destinatarios.
  • toUids: una matriz que contiene los UID del destinatario.
  • cc: una dirección de correo electrónico de un único destinatario o una matriz que contiene varias direcciones de correo electrónico de destinatarios.
  • ccUids: una matriz que contiene los UID del destinatario CC.
  • bcc: una dirección de correo electrónico de un solo destinatario o una matriz que contiene varias direcciones de correo electrónico de destinatarios.
  • bccUids: una matriz que contiene los UID del destinatario BCC.
  • encabezados: un objeto de campos de encabezado adicionales (por ejemplo, {"X-Custom-Header": "value", "X-Second-Custom-Header": "value"} ).

NOTA: Las opciones toUids , ccUids y bccUids entregan correos electrónicos basados ​​en los UID de usuario ingresados ​​en direcciones de correo electrónico dentro de un documento de Cloud Firestore. Para usar estas opciones de destinatario, debe especificar una colección de Cloud Firestore para el parámetro "Colección de usuarios" de la extensión. Luego, la extensión puede leer el campo email para cada UID especificado en los campos toUids , ccUids y/o bccUids .

Campo de mensaje

El campo message del documento contiene información de entrega sin procesar para el correo electrónico. Por lo general, este campo solo debe completarse con código confiable que se ejecuta en sus propios servidores o funciones de nube (consulte la sección "Reglas de seguridad y envío de correo electrónico" a continuación).

Las propiedades disponibles para el campo message son:

  • messageId: un encabezado de ID de mensaje para el correo electrónico, si corresponde.
  • asunto: El asunto del correo electrónico.
  • texto: El contenido en texto plano del correo electrónico.
  • html: el contenido HTML del correo electrónico.
  • amp: El contenido AMP4EMAIL del correo electrónico.
  • archivos adjuntos: una matriz que contiene archivos adjuntos; Opciones de Nodemailer admitidas: cadena utf-8, tipo de contenido personalizado, URL, cadena codificada, URI de datos y nodo MIME pregenerado (tenga en cuenta que su correo electrónico no tiene acceso al sistema de archivos del servidor en la nube).

Uso avanzado

Obtenga más información sobre el uso más avanzado de esta extensión: