使用觸發電子郵件額外資訊

觸發電子郵件擴充功能 (firestore-send-email) 可自動傳送 根據 Cloud Firestore 集合中的文件建立電子郵件新增文件至 觸發這項擴充功能後,這項擴充功能就會傳送來自 文件中的欄位文件的頂層欄位會指定電子郵件的寄件者和 收件者,包括 toccbcc 選項 (分別支援 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 範本。

安裝前設定

安裝擴充功能前,請先完成下列步驟:

  1. 設定外寄郵件服務。

    安裝觸發事件電子郵件擴充功能時,您需要指定 SMTP 伺服器的連線和驗證詳細資訊,擴充功能需 可用來傳送電子郵件。通常是由電子郵件遞送服務提供 例如 Sendgrid、Mailgun 或 Mailchimp 交易電子郵件 您也能使用 Compute Engine

  2. 建立電子郵件文件集合。

    觸發電子郵件擴充功能會監聽 Cloud Firestore 中的新文件 指定的集合找到新文件時,擴充功能會 根據文件欄位傳送電子郵件。您可以使用任何 Cloud Firestore 收集相關資料本頁面的範例使用集合 名為 email

  3. 針對收集電子郵件文件設定安全性規則。

    這項擴充功能可用來直接從客戶觸發電子郵件傳送作業 應用程式。不過,您應該謹慎控管對 避免疑似遭到濫用 (您不希望使用者 任意電子郵件!

    安全性規則會因應用程式而異,但您必須 請務必確保電子郵件只會傳送給指定收件者, 任意形式的內容應保持在最低限度範本可協助您 就能使用安全性規則來驗證填入 這個範本符合您的期望,也就是使用者可存取的內容 觸發。

  4. 選用:設定使用者集合。

    在這項擴充功能的基本用法中,指定電子郵件收件者 方法是在 toccbcc 欄位中指定對方的電子郵件地址 訊息文件如果您有使用者資料庫 Cloud Firestore,您可以透過UID。為此 您的使用者集合必須符合下列條件才能使用:

    • 集合必須對使用者 ID 加上索引鍵。也就是每個檔案的 集合中的使用者文件必須是使用者的 Firebase 驗證 UID。
    • 每份使用者文件都必須有 email 欄位,內含使用者的電子郵件地址 讓我們看看 DNS 解析 進一步探索內部和外部位址
  5. 選用:設定範本集合。

    您可以使用控點範本轉譯電子郵件。 如要這麼做,您必須建立 Cloud Firestore 集合來包含 範本。

    請參閱搭配使用 Handlebars 範本與觸發電子郵件擴充功能

安裝擴充功能

如要安裝擴充功能,請按照 安裝 Firebase 擴充功能 頁面。總結來說,請執行下列其中一項操作:

  • 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 的陣列。
  • 密件副本:單一收件者電子郵件地址或包含多個收件者電子郵件地址的陣列。
  • bccUids:包含密件副本收件者 UID 的陣列。
  • headers:其他標頭欄位的物件 (例如 {"X-Custom-Header": "value", "X-Second-Custom-Header": "value"})。

附註:toUidsccUidsbccUids 選項會根據 在 Cloud Firestore 文件中,對應至電子郵件地址的使用者 UID。使用條件 您必須指定這些收件者選項中的 Cloud Firestore 集合 擴充功能的「使用者集合」參數。接著,擴充功能會讀取 email 欄位:toUidsccUids 和/或 bccUids 欄位中指定的每個 UID。

訊息欄位

文件的 message 欄位包含 電子郵件。一般來說,這個欄位應該只由執行於以下應用程式的受信任程式碼填入: 自己的伺服器或 Cloud Functions (請參閱「安全性規則與傳送 電子郵件"部分)。

message 欄位可用的屬性如下:

  • messageId:電子郵件的郵件 ID 標頭 (如果有的話)。
  • 主旨:電子郵件的主旨。
  • text:電子郵件的純文字內容。
  • html:電子郵件的 HTML 內容。
  • amp:電子郵件的 AMP4EMAIL 內容。
  • attachments:包含附件的陣列;支援的 Nodemailer 選項:utf-8 字串、自訂內容類型、網址、編碼字串、資料 URI 和預先產生的 MIME 節點 (請注意,您的電子郵件無法存取雲端伺服器的檔案系統)。

進階用途

進一步瞭解這項擴充功能的進階用法: