您可以使用「觸發電子郵件」擴充功能 (firestore-send-email
),根據 Cloud Firestore 集合中的文件自動傳送電子郵件。新增文件至
觸發這項擴充功能後,這項擴充功能就會傳送來自
文件中的欄位文件頂層欄位會指定電子郵件的寄件者和收件者,包括 to
、cc
和 bcc
選項 (每個都支援 UID)。
文件的 message
欄位會指定其他電子郵件元素,例如主旨行
和電子郵件內文 (純文字或 HTML)。
以下是可觸發這個擴充功能的基本文件寫入範例:
admin.firestore().collection('mail').add({
to: 'someone@example.com',
message: {
subject: 'Hello from Firebase!',
html: 'This is an <code>HTML</code> email body.',
},
})
您也可以選擇設定這項擴充功能,使用 Handlebar 範本。
安裝前設定
安裝擴充功能前,請先完成下列步驟:
設定外寄郵件服務。
安裝「觸發電子郵件」擴充功能時,您必須指定 SMTP 伺服器的連線和驗證詳細資料,擴充功能會使用這些資料傳送電子郵件。通常是由電子郵件傳送服務提供。 例如 Sendgrid、Mailgun 或 Mailchimp 交易電子郵件 您也能使用 Compute Engine
建立電子郵件文件集合。
觸發電子郵件擴充功能會監聽您指定的 Cloud Firestore 集合中是否有新文件。找到新文件時,擴充功能會 根據文件欄位傳送電子郵件。您可以使用任何 Cloud Firestore 收集相關資料本頁面的範例使用集合
email
。為電子郵件文件集合設定安全性規則。
這項擴充功能可用來直接從客戶觸發電子郵件傳送作業 應用程式。不過,您應該謹慎控管對 避免疑似遭到濫用 (您不希望使用者 任意電子郵件!
安全性規則會因應用程式而異,但您必須 請務必確保電子郵件只會傳送給指定收件者, 任意形式的內容應保持在最低限度範本可協助您 就能使用安全性規則來驗證填入 這個範本符合您的期望,也就是使用者可存取的內容 觸發。
選用:設定使用者集合。
在這項擴充功能的基本用法中,指定電子郵件收件者 方法是在
to
、cc
和bcc
欄位中指定對方的電子郵件地址 訊息文件如果您有使用者資料庫 Cloud Firestore,您可以透過UID。為此 您的使用者集合必須符合下列條件才能使用:- 集合必須以使用者 ID 做為索引鍵。也就是每個檔案的 集合中的使用者文件必須是使用者的 Firebase Authentication UID。
- 每個使用者文件都必須包含
email
欄位,其中包含使用者的電子郵件地址。
選用:設定範本集合。
您可以使用控點範本轉譯電子郵件。 如要這麼做,您需要有 Cloud Firestore 集合納入 範本。
安裝擴充功能
如要安裝擴充功能,請按照「安裝 Firebase Extension」頁面上的步驟操作。總結來說,請執行下列其中一項操作:
Firebase 控制台:點選以下按鈕:
CLI:執行下列指令:
firebase ext:install firebase/firestore-send-email --project=projectId-or-alias
安裝擴充功能時,系統會提示您指定 SMTP 連線資訊和先前設定的 Cloud Firestore 集合。
使用擴充功能
安裝完成後,這個擴充功能會監控
您設定的集合系統會根據
文件中的欄位頂層欄位會指定電子郵件的寄件者以及
位收件者。message
欄位包含要傳送的電子郵件詳細資料。
包括電子郵件內文
範例:傳送電子郵件
如要傳送簡單的訊息,請使用 to
在訊息集合中新增文件
和 message
欄位,其中含有以下內容:
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.',
}
寄件者和收件者欄位
文件的頂層欄位可為電子郵件寄件者和收件者提供資訊 可能不準確或不適當可用欄位如下:
- from:寄件者的電子郵件地址。如果未在文件中指定,系統會使用設定的「預設 FROM 地址」參數。
- replyTo:回覆電子郵件地址。如果未在文件中指明,系統會使用設定的「預設回覆地址」參數。
- to:單一收件者電子郵件地址或包含多個收件者電子郵件地址的陣列。
- toUids:包含收件者 UID 的陣列。
- 副本:單一收件者電子郵件地址或包含多個收件者電子郵件地址的陣列。
- ccUids:包含副本收件者 UID 的陣列。
- bcc:單一收件者的電子郵件地址,或包含多位收件者電子郵件地址的陣列。
- bccUids:包含密件副本收件者 UID 的陣列。
- headers:其他標頭欄位的物件 (例如
{"X-Custom-Header": "value", "X-Second-Custom-Header": "value"}
)。
注意:toUids
、ccUids
和 bccUids
選項會根據
在 Cloud Firestore 文件中,對應至電子郵件地址的使用者 UID。使用條件
您必須指定這些收件者選項中的 Cloud Firestore 集合
擴充功能的「使用者集合」參數。接著,擴充功能會讀取
email
欄位:toUids
、ccUids
和/或 bccUids
欄位中指定的每個 UID。
訊息欄位
文件的 message
欄位包含電子郵件的原始傳送資訊。一般來說,這個欄位應該只由執行於以下應用程式的受信任程式碼填入:
自己的伺服器或 Cloud Functions (請參閱「安全性規則與傳送
電子郵件"部分)。
message
欄位可用的屬性如下:
- messageId:電子郵件的郵件 ID 標頭 (如有)。
- 主旨:電子郵件的主旨。
- text:電子郵件的純文字內容。
- html:電子郵件的 HTML 內容。
- amp:電子郵件的 AMP4EMAIL 內容。
- attachments:包含附件的陣列;支援的 Nodemailer 選項:utf-8 字串、自訂內容類型、網址、編碼字串、資料 URI 和預先產生的 MIME 節點 (請注意,您的電子郵件無法存取雲端伺服器的檔案系統)。
進階用途
進一步瞭解這項擴充功能的進階用法: