Tiện ích Trigger Email (firestore-send-email
) cho phép bạn tự động gửi email dựa trên các tài liệu trong một bộ sưu tập Cloud Firestore. Việc thêm một tài liệu vào bộ sưu tập sẽ kích hoạt tiện ích này để gửi email được tạo từ các trường của tài liệu. Các trường cấp cao nhất của tài liệu chỉ định người gửi và người nhận email, bao gồm các tuỳ chọn to
, cc
và bcc
(mỗi tuỳ chọn hỗ trợ UID). Trường message
của tài liệu chỉ định các phần tử email khác, chẳng hạn như dòng tiêu đề và nội dung email (văn bản thuần tuý hoặc HTML).
Dưới đây là một ví dụ cơ bản về cách ghi tài liệu sẽ kích hoạt tiện ích này:
admin.firestore().collection('mail').add({
to: 'someone@example.com',
message: {
subject: 'Hello from Firebase!',
html: 'This is an <code>HTML</code> email body.',
},
})
Bạn cũng có thể tuỳ ý định cấu hình tiện ích này để hiển thị email bằng các mẫu Handlebars.
Thiết lập trước khi cài đặt
Trước khi cài đặt tiện ích, hãy hoàn tất các bước sau:
Thiết lập dịch vụ gửi thư.
Khi cài đặt tiện ích Trigger Email, bạn cần chỉ định thông tin chi tiết về kết nối và xác thực của máy chủ SMTP mà tiện ích này sử dụng để gửi email. Thông tin này thường do một dịch vụ phân phối email cung cấp, chẳng hạn như Sendgrid, Mailgun hoặc Email giao dịch của Mailchimp, nhưng cũng có thể là một máy chủ mà bạn tự chạy.
Tạo một bộ sưu tập tài liệu email.
Tiện ích Email kích hoạt sẽ theo dõi các tài liệu mới trong bộ sưu tập Cloud Firestore mà bạn chỉ định. Khi tìm thấy một tài liệu mới, tiện ích này sẽ gửi email dựa trên các trường của tài liệu. Bạn có thể sử dụng bất kỳ bộ sưu tập Cloud Firestore nào cho mục đích này; các ví dụ trên trang này sử dụng một bộ sưu tập có tên là
email
.Thiết lập quy tắc bảo mật cho bộ sưu tập tài liệu email.
Bạn có thể dùng tiện ích này để kích hoạt việc gửi email trực tiếp từ các ứng dụng khách. Tuy nhiên, bạn nên kiểm soát chặt chẽ quyền truy cập của ứng dụng vào bộ sưu tập này để tránh trường hợp có thể bị lợi dụng (bạn không muốn người dùng có thể gửi email tuỳ ý từ địa chỉ của công ty!).
Các quy tắc bảo mật sẽ khác nhau tuỳ theo ứng dụng, nhưng bạn phải luôn đảm bảo rằng email chỉ được gửi đến người nhận dự kiến và nội dung ở định dạng tuỳ ý được giữ ở mức tối thiểu. Mẫu có thể giúp ích ở đây – bạn có thể sử dụng các quy tắc bảo mật để xác minh rằng dữ liệu đang được điền vào mẫu khớp với kỳ vọng của bạn về nội dung mà người dùng được phép kích hoạt.
Không bắt buộc: Thiết lập một tập hợp người dùng.
Trong cách sử dụng cơ bản của tiện ích này, bạn chỉ định người nhận email bằng cách chỉ định địa chỉ email của họ trong các trường
to
,cc
vàbcc
của tài liệu thư. Ngoài ra, nếu có cơ sở dữ liệu người dùng trong Cloud Firestore, bạn có thể chỉ định người nhận bằng UID của người dùng. Để tính năng này hoạt động, tập hợp người dùng của bạn phải đáp ứng các tiêu chí sau:- Tập hợp này phải được khoá bằng mã nhận dạng người dùng. Tức là mã tài liệu của từng tài liệu người dùng trong bộ sưu tập phải là UID Firebase Authentication của người dùng.
- Mỗi tài liệu người dùng phải có một trường
email
chứa địa chỉ email của người dùng.
Không bắt buộc: Thiết lập bộ sưu tập mẫu.
Bạn có thể hiển thị email bằng mẫu Handlebars. Để làm như vậy, bạn sẽ cần một bộ sưu tập Cloud Firestore để chứa các mẫu.
Hãy xem phần Sử dụng mẫu Handlebars với tiện ích Email kích hoạt để biết thông tin chi tiết.
Cài đặt tiện ích
Để cài đặt tiện ích, hãy làm theo các bước trên trang Cài đặt Firebase Extension. Tóm lại, hãy làm theo một trong những cách sau:
Bảng điều khiển Firebase: Nhấp vào nút sau:
CLI: Chạy lệnh sau:
firebase ext:install firebase/firestore-send-email --project=projectId-or-alias
Khi cài đặt tiện ích này, bạn sẽ được nhắc chỉ định thông tin kết nối SMTP và các bộ sưu tập Cloud Firestore mà bạn đã thiết lập trước đó.
Sử dụng tiện ích
Sau khi cài đặt, tiện ích này sẽ theo dõi tất cả các hoạt động ghi tài liệu vào bộ sưu tập mà bạn đã định cấu hình. Email được phân phối dựa trên nội dung của các trường trong tài liệu. Các trường cấp cao nhất chỉ định người gửi và người nhận email. Trường message
chứa thông tin chi tiết về email cần phân phối, bao gồm cả nội dung email.
Ví dụ: Gửi email
Để gửi một tin nhắn đơn giản, hãy thêm một tài liệu vào bộ sưu tập tin nhắn của bạn bằng trường to
và trường message
có nội dung sau:
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.',
}
Trường người gửi và người nhận
Các trường cấp cao nhất của tài liệu cung cấp thông tin về người gửi và người nhận email. Các trường có sẵn là:
- from: Địa chỉ email của người gửi. Nếu không được chỉ định trong tài liệu, hãy sử dụng thông số "Địa chỉ GỬI mặc định" đã định cấu hình.
- replyTo: Địa chỉ email trả lời. Nếu không được chỉ định trong tài liệu, hãy sử dụng thông số "Địa chỉ REPLY-TO mặc định" đã định cấu hình.
- to: Một địa chỉ email người nhận hoặc một mảng chứa nhiều địa chỉ email người nhận.
- toUids: Một mảng chứa UID của người nhận.
- cc: Một địa chỉ email người nhận hoặc một mảng chứa nhiều địa chỉ email người nhận.
- ccUids: Một mảng chứa UID của người nhận CC.
- bcc: Một địa chỉ email người nhận hoặc một mảng chứa nhiều địa chỉ email người nhận.
- bccUids: Một mảng chứa UID của người nhận BCC.
- headers: Một đối tượng của các trường tiêu đề bổ sung (ví dụ:
{"X-Custom-Header": "value", "X-Second-Custom-Header": "value"}
).
LƯU Ý: Các tuỳ chọn toUids
, ccUids
và bccUids
sẽ gửi email dựa trên UID của người dùng được liên kết với địa chỉ email trong tài liệu Cloud Firestore. Để sử dụng các tuỳ chọn người nhận này, bạn cần chỉ định một tập hợp Cloud Firestore cho thông số "Tập hợp người dùng" của tiện ích. Sau đó, tiện ích có thể đọc trường email
cho từng UID được chỉ định trong các trường toUids
, ccUids
và/hoặc bccUids
.
Trường thông báo
Trường message
của tài liệu chứa thông tin phân phối thô cho email. Trường này thường chỉ được điền bằng mã đáng tin cậy chạy trong máy chủ của riêng bạn hoặc trong các Hàm trên đám mây (tham khảo phần "Quy tắc bảo mật và gửi email" bên dưới).
Các thuộc tính có sẵn cho trường message
là:
- messageId: Tiêu đề mã nhận dạng thư cho email, nếu có.
- subject: Tiêu đề của email.
- text: Nội dung văn bản thuần tuý của email.
- html: Nội dung HTML của email.
- amp: Nội dung AMP4EMAIL của email.
- tệp đính kèm: Một mảng chứa(các) tệp đính kèm; các tuỳ chọn Nodemailer được hỗ trợ: chuỗi utf-8, loại nội dung tuỳ chỉnh, URL, chuỗi đã mã hoá, URI dữ liệu và nút MIME được tạo sẵn (lưu ý rằng email của bạn không có quyền truy cập vào hệ thống tệp của máy chủ đám mây).
Sử dụng nâng cao
Tìm hiểu thêm về cách sử dụng phần mở rộng này ở cấp độ nâng cao:
- Sử dụng mẫu Handlebars với tiện ích Trigger Email
- Quản lý trạng thái phân phối bằng tiện ích Email kích hoạt