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

您可以使用「觸發電子郵件」擴充功能 (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 Authentication UID。
    • 每個使用者文件都必須包含 email 欄位,其中包含使用者的電子郵件地址。
  5. 選用:設定範本集合。

    您可以使用 Handlebars 範本呈現電子郵件。如要這麼做,您需要一個 Cloud Firestore 集合來容納範本。

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

安裝擴充功能

如要安裝擴充功能,請按照「安裝 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 的陣列。
  • cc: 單一收件者電子郵件地址,或包含多個收件者電子郵件地址的陣列。
  • 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 標頭 (如果有的話)。
  • subject:電子郵件主旨。
  • text:電子郵件的純文字內容。
  • html:電子郵件的 HTML 內容。
  • amp:電子郵件的 AMP4EMAIL 內容。
  • attachments:包含附件的陣列;支援的 Nodemailer 選項:utf-8 字串、自訂內容類型、網址、編碼字串、資料 URI 和預先產生的 MIME 節點 (請注意,您的電子郵件無法存取雲端伺服器的檔案系統)。

進階用途

進一步瞭解如何使用這項擴充功能: