L'extension Trigger Email (firestore-send-email
) vous permet d'envoyer automatiquement des e-mails en fonction des documents d'une collection Cloud Firestore. L'ajout d'un document à la collection déclenche l'envoi d'un e-mail créé à partir des champs du document. Les champs de premier niveau du document spécifient l'expéditeur et les destinataires de l'e-mail, y compris les options to
, cc
et bcc
(chacune prenant en charge les UID). Le champ message
du document spécifie les autres éléments de l'e-mail, comme l'objet et le corps (en texte brut ou en HTML).
Voici un exemple de requête d'écriture de document de base qui déclencherait cette extension :
admin.firestore().collection('mail').add({
to: 'someone@example.com',
message: {
subject: 'Hello from Firebase!',
html: 'This is an <code>HTML</code> email body.',
},
})
Vous pouvez également configurer cette extension pour qu'elle affiche les e-mails à l'aide de modèles Handlebars.
Configuration avant l'installation
Avant d'installer l'extension, procédez comme suit :
Configurez votre service de messagerie sortante.
Lorsque vous installez l'extension Trigger Email, vous devez spécifier les informations de connexion et d'authentification d'un serveur SMTP, que l'extension utilise pour envoyer des e-mails. Il s'agit généralement d'un service de distribution d'e-mails tel que Sendgrid, Mailgun ou Mailchimp Transactional Email, mais il peut également s'agir d'un serveur que vous exécutez vous-même.
Créez une collection de documents d'e-mails.
L'extension Trigger Email écoute les nouveaux documents dans une collection Cloud Firestore que vous spécifiez. Lorsqu'elle trouve un nouveau document, l'extension envoie un e-mail en fonction des champs du document. Vous pouvez utiliser n'importe quelle collection Cloud Firestore à cette fin. Les exemples de cette page utilisent une collection nommée
email
.Configurez des règles de sécurité pour votre collection de documents d'e-mails.
Cette extension peut être utilisée pour déclencher l'envoi d'e-mails directement à partir d'applications clientes. Toutefois, vous devez contrôler soigneusement l'accès des clients à la collection pour éviter tout abus potentiel (vous ne voulez pas que les utilisateurs puissent envoyer des e-mails arbitraires à partir de l'adresse de votre entreprise).
Les règles de sécurité varient d'une application à l'autre, mais vous devez toujours vous assurer que les e-mails ne sont envoyés qu'aux destinataires prévus et que le contenu au format libre est réduit au minimum. Les modèles peuvent vous aider. Vous pouvez utiliser des règles de sécurité pour vérifier que les données renseignées dans le modèle correspondent à ce qu'un utilisateur est autorisé à déclencher.
Facultatif : Configurez une collection d'utilisateurs.
Dans le cadre de l'utilisation de base de cette extension, vous spécifiez les destinataires d'un e-mail en indiquant leur adresse e-mail dans les champs
to
,cc
etbcc
du document de message. Si vous disposez d'une base de données utilisateur dans Cloud Firestore, vous pouvez également spécifier les destinataires à l'aide de leur UID. Pour que cela fonctionne, votre collection d'utilisateurs doit répondre aux critères suivants :- La collecte doit être basée sur les ID utilisateur. Autrement dit, l'ID de document de chaque document utilisateur de la collection doit correspondre à l'UID Firebase Authentication de l'utilisateur.
- Chaque document utilisateur doit comporter un champ
email
contenant l'adresse e-mail de l'utilisateur.
Facultatif : Configurez une collection de modèles.
Vous pouvez afficher des e-mails à l'aide de modèles Handlebars. Pour ce faire, vous aurez besoin d'une collection Cloud Firestore pour contenir vos modèles.
Pour en savoir plus, consultez Utiliser des modèles Handlebars avec l'extension Trigger Email.
Installer l'extension
Pour installer l'extension, suivez les étapes décrites sur la page Installer un Firebase Extension. En résumé, effectuez l'une des opérations suivantes :
Console Firebase : cliquez sur le bouton suivant :
CLI : exécutez la commande suivante :
firebase ext:install firebase/firestore-send-email --project=projectId-or-alias
Lorsque vous installez l'extension, vous êtes invité à spécifier vos informations de connexion SMTP et les collections Cloud Firestore que vous avez configurées précédemment.
Utiliser l'extension
Une fois installée, cette extension surveille toutes les écritures de documents dans la collection que vous avez configurée. L'e-mail est envoyé en fonction du contenu des champs du document. Les champs de premier niveau spécifient l'expéditeur et les destinataires de l'e-mail. Le champ message
contient les détails de l'e-mail à envoyer, y compris le corps de l'e-mail.
Exemple : Envoyer un e-mail
Pour envoyer un message simple, ajoutez un document à votre collection de messages avec un champ to
et un champ message
contenant le contenu suivant :
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.',
}
Champs "Expéditeur" et "Destinataire"
Les champs de premier niveau du document fournissent des informations sur l'expéditeur et le destinataire de l'e-mail. parmi les suivants :
- from: Adresse e-mail de l'expéditeur. Si elle n'est pas spécifiée dans le document, elle utilise le paramètre "Adresse d'expéditeur par défaut" configuré.
- replyTo : adresse e-mail de réponse. Si elle n'est pas spécifiée dans le document, le paramètre "Adresse de réponse par défaut" configuré est utilisé.
- to : adresse e-mail d'un seul destinataire ou tableau contenant plusieurs adresses e-mail de destinataires.
- toUids : tableau contenant les UID des destinataires.
- cc : adresse e-mail d'un seul destinataire ou tableau contenant plusieurs adresses e-mail de destinataires.
- ccUids : tableau contenant les UID des destinataires en copie.
- bcc : adresse e-mail d'un seul destinataire ou tableau contenant plusieurs adresses e-mail de destinataires.
- bccUids : tableau contenant les UID des destinataires en copie cachée.
- headers : objet de champs d'en-tête supplémentaires (par exemple,
{"X-Custom-Header": "value", "X-Second-Custom-Header": "value"}
).
REMARQUE : Les options toUids
, ccUids
et bccUids
envoient des e-mails en fonction des UID utilisateur associés à des adresses e-mail dans un document Cloud Firestore. Pour utiliser ces options de destinataire, vous devez spécifier une collection Cloud Firestore pour le paramètre "Collection d'utilisateurs" de l'extension. L'extension peut ensuite lire le champ email
pour chaque UID spécifié dans les champs toUids
, ccUids
et/ou bccUids
.
Champ de message
Le champ message
du document contient des informations brutes sur la distribution de l'e-mail. En règle générale, ce champ ne doit être renseigné que par du code fiable exécuté sur vos propres serveurs ou dans Cloud Functions (consultez la section "Règles de sécurité et envoi d'e-mails" ci-dessous).
Les propriétés disponibles pour le champ message
sont les suivantes :
- messageId : en-tête d'ID de message pour l'e-mail, le cas échéant.
- subject : objet de l'e-mail.
- text : contenu en texte brut de l'e-mail.
- html : contenu HTML de l'e-mail.
- amp: contenu AMP4EMAIL de l'e-mail.
- attachments : tableau contenant une ou plusieurs pièces jointes. Les options Nodemailer suivantes sont acceptées : chaîne UTF-8, type de contenu personnalisé, URL, chaîne encodée, URI de données et nœud MIME pré-généré (notez que votre adresse e-mail n'a pas accès au système de fichiers du serveur cloud).
Utilisation avancée
Découvrez des utilisations plus avancées de cette extension :
- Utiliser des modèles Handlebars avec l'extension Trigger Email
- Gérer l'état de la livraison avec l'extension Trigger Email