L'estensione Invia email con trigger (firestore-send-email
) ti consente di inviare automaticamente email in base ai documenti di una raccolta Cloud Firestore. L'aggiunta di un documento alla raccolta attiva questa estensione per inviare un'email creata dai campi del documento. I campi di primo livello del documento specificano il mittente e i destinatari email, incluse le opzioni to
, cc
e bcc
(ciascuna supporta gli UID). Il campo message
del documento specifica gli altri elementi dell'email, come la riga dell'oggetto e il corpo dell'email (in testo normale o HTML).
Ecco un esempio di scrittura di un documento di base che attiverebbe questa estensione:
admin.firestore().collection('mail').add({
to: 'someone@example.com',
message: {
subject: 'Hello from Firebase!',
html: 'This is an <code>HTML</code> email body.',
},
})
Se vuoi, puoi anche configurare questa estensione per eseguire il rendering delle email utilizzando i modelli Handlebars.
Configurazione di preinstallazione
Prima di installare l'estensione, completa i seguenti passaggi:
Configura il servizio di posta in uscita.
Quando installi l'estensione Attiva email, devi specificare i dettagli di connessione e autenticazione di un server SMTP, che l'estensione utilizza per inviare le email. In genere viene fornito da un servizio di invio email come Sendgrid, Mailgun o Mailchimp Transactional Email, ma potrebbe anche essere un server che gestisci autonomamente.
Crea una raccolta di documenti email.
L'estensione Attiva email ascolta i nuovi documenti in una Cloud Firestore collezione specificata. Quando trova un nuovo documento, l'estensione invia un'email in base ai campi del documento. A questo scopo puoi utilizzare qualsiasi raccolta Cloud Firestore. Gli esempi in questa pagina utilizzano una raccolta denominata
email
.Configura le regole di sicurezza per la raccolta di documenti email.
Questa estensione può essere utilizzata per attivare l'invio di email direttamente dalle applicazioni client. Tuttavia, devi controllare attentamente l'accesso dei client alla raccolta per evitare potenziali abusi (non vuoi che gli utenti possano inviare email arbitrarie dall'indirizzo della tua azienda).
Le regole di sicurezza variano da un'applicazione all'altra, ma devi sempre assicurarti che le email vengano inviate solo ai destinatari previsti e che i contenuti in formato libero siano ridotti al minimo. I modelli possono essere utili in questo caso: puoi utilizzare le regole di sicurezza per verificare che i dati inseriti nel modello corrispondano alle tue aspettative in merito a ciò che un utente deve poter attivare.
(Facoltativo) Configura una raccolta di utenti.
Nell'utilizzo di base di questa estensione, specifichi i destinatari di un'email indicando i relativi indirizzi email nei campi
to
,cc
ebcc
del documento del messaggio. In alternativa, se hai un database utente in Cloud Firestore, puoi specificare i destinatari utilizzando gli UID degli utenti. Affinché questo funzioni, la raccolta degli utenti deve soddisfare i seguenti criteri:- La raccolta deve essere basata sugli ID utente. In altre parole, l'ID documento di ogni documento utente nella raccolta deve essere l'UID Firebase Authentication dell'utente.
- Ogni documento utente deve avere un campo
email
contenente l'indirizzo email dell'utente.
(Facoltativo) Configura una raccolta di modelli.
Puoi visualizzare le email utilizzando i modelli Handlebars. Per farlo, devi disporre di una raccolta Cloud Firestore contenente i modelli.
Per maggiori dettagli, consulta la sezione Utilizzare i modelli Handlebars con l'estensione Trigger Email.
Installa l'estensione
Per installare l'estensione, segui i passaggi descritti nella pagina Installa un Firebase Extension. In sintesi, esegui una delle seguenti operazioni:
Console Firebase: fai clic sul seguente pulsante:
Interfaccia a riga di comando:esegui il seguente comando:
firebase ext:install firebase/firestore-send-email --project=projectId-or-alias
Quando installi l'estensione, ti verrà chiesto di specificare i dati di connessione SMTP e le raccolte Cloud Firestore che hai configurato in precedenza.
Utilizzare l'estensione
Dopo l'installazione, questa estensione monitora tutte le scritture dei documenti nella raccolta configurata. L'email viene recapitata in base ai contenuti dei campi del documento. I campi di primo livello specificano il mittente e i destinatari dell'email. Il campo message
contiene i dettagli dell'email da inviare, incluso il corpo dell'email.
Esempio: inviare un'email
Per inviare un messaggio semplice, aggiungi un documento alla raccolta di messaggi con un campo to
e un campo message
con i seguenti contenuti:
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.',
}
Campi mittente e destinatario
I campi di primo livello del documento forniscono le informazioni sul mittente e sul destinatario dell'email. I campi disponibili sono:
- from: l'indirizzo email del mittente. Se non specificato nel documento, viene utilizzato il parametro "Indirizzo FROM predefinito" configurato.
- replyTo: l'indirizzo email di risposta. Se non specificato nel documento, viene utilizzato il parametro "Indirizzo REPLY-TO predefinito" configurato.
- to: un singolo indirizzo email del destinatario o un array contenente più indirizzi email del destinatario.
- toUids:un array contenente gli UID dei destinatari.
- cc: un singolo indirizzo email del destinatario o un array contenente più indirizzi email del destinatario.
- ccUids:un array contenente gli UID dei destinatari in Cc.
- bcc: un singolo indirizzo email del destinatario o un array contenente più indirizzi email del destinatario.
- bccUids:un array contenente gli UID dei destinatari Ccn.
- headers: un oggetto di campi di intestazione aggiuntivi (ad esempio
{"X-Custom-Header": "value", "X-Second-Custom-Header": "value"}
).
NOTA: le opzioni toUids
, ccUids
e bccUids
inviano le email in base agli UID utente associati agli indirizzi email all'interno di un documento Cloud Firestore. Per utilizzare queste opzioni per i destinatari, devi specificare una raccolta Cloud Firestore per il parametro "Raccolta utenti " dell'estensione. L'estensione può quindi leggere il
email
campo per ogni UID specificato nei campi toUids
, ccUids
e/o bccUids
.
Campo messaggio
Il campo message
del documento contiene le informazioni non elaborate sulla consegna dell'email. In genere, questo campo deve essere compilato solo da codice attendibile in esecuzione sui tuoi server o in Cloud Functions (fai riferimento alla sezione "Regole di sicurezza e invio di email" di seguito).
Le proprietà disponibili per il campo message
sono:
- messageId: un'intestazione ID messaggio per l'email, se presente.
- subject: l'oggetto dell'email.
- text: il testo non elaborato dell'email.
- html: i contenuti HTML dell'email.
- amp: i contenuti AMP4EMAIL dell'email.
- attachments: un array contenente gli allegati; opzioni Nodemailer supportate: stringa UTF-8, tipo di contenuto personalizzato, URL, stringa codificata, URI dati e nodo MIME pregenerato (tieni presente che la tua email non ha accesso al file system del server cloud).
Utilizzo avanzato
Scopri di più sull'utilizzo avanzato di questa estensione:
- Utilizzare i modelli Handlebars con l'estensione Email trigger
- Gestire lo stato di invio con l'estensione Email trigger