获取我们在 Firebase 峰会上发布的所有信息,了解 Firebase 可如何帮助您加快应用开发速度并满怀信心地运行应用。了解详情

Uso de la extensión Trigger Email

La extensión Trigger Email ( firestore-send-email ) le permite enviar automáticamente correos electrónicos basados ​​en documentos en 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 compatible con UID). El campo de 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 documento de ejemplo básico 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.',
  },
})

También puede configurar opcionalmente esta extensión para procesar correos electrónicos usando plantillas de Handlebars .

Configuración previa a la instalación

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

  1. Configura tu 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. Esto generalmente 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 especifique. Cuando encuentra un nuevo documento, la extensión envía un correo electrónico basado en los campos del documento. Puede usar cualquier colección de Cloud Firestore para este propósito; los ejemplos en esta página usan una colección llamada 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 del 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 debe asegurarse de que los correos electrónicos se envíen solo a los destinatarios previstos y que el contenido de forma 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 un usuario debería poder activar.

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

    Bajo 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 los destinatarios mediante los UID de los usuarios. Para que esto funcione, su colección de usuarios debe cumplir con estos criterios:

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

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

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

Instalar la extensión

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

  • 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 su información de 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 supervisa todas las escrituras de documentos en la colección que configuró. El correo electrónico se entrega en función del contenido de los campos del documento. Los campos de nivel superior especifican el remitente y los destinatarios del correo electrónico. El campo del 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 de 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 el 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 predeterminada".
  • answerTo: la dirección de correo electrónico de respuesta. Si no se especifica en el documento, utiliza el parámetro configurado "Dirección de respuesta predeterminada".
  • a: una dirección de correo electrónico de un solo destinatario o una matriz que contiene varias direcciones de correo electrónico de destinatarios.
  • toUids: una matriz que contiene los UID de los destinatarios.
  • cc: una dirección de correo electrónico de un solo destinatario o una matriz que contiene varias direcciones de correo electrónico de destinatarios.
  • ccUids: una matriz que contiene los UID de los destinatarios de 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 de los destinatarios de BCC.
  • encabezados: un objeto de campos de encabezado adicionales (por ejemplo, {"X-Custom-Header": "value", "X-Second-Custom-Header": "value"} ).

NOTA: Las toUids , ccUids y bccUids entregan correos electrónicos basados ​​en 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 de email para cada UID especificado en los toUids , ccUids y/o bccUids .

campo de mensaje

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

Las propiedades disponibles para el campo de 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 de texto sin formato 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

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