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 thành phần khác của email, chẳng hạn như dòng tiêu đề và nội dung email (văn bản thuần tuý hoặc HTML).
Sau đây là một ví dụ cơ bản về thao tác 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ách sử dụng 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 thành các bước sau:
Thiết lập dịch vụ gửi thư đi.
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ột máy chủ SMTP mà tiện ích này dùng để gửi email. Thông tin này thường do một dịch vụ gửi email cung cấp, chẳng hạn như Sendgrid, Mailgun hoặc Mailchimp Transactional Email, 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 Trigger Email theo dõi các tài liệu mới trong một Cloud Firestore bộ sưu tập 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ỳ Cloud Firestore bộ sưu tập 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 cẩn thận quyền truy cập của ứng dụng khách vào bộ sưu tập để tránh tình trạng lạm 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 mình!).
Quy tắc bảo mật sẽ khác nhau tuỳ theo từng ứng dụng, nhưng bạn luôn phải đảm bảo rằng email chỉ được gửi đến những người nhận dự kiến và nội dung tự do được giữ ở mức tối thiểu. Mẫu có thể giúp bạn trong trường hợp này. Bạn có thể sử dụng quy tắc bảo mật để xác minh rằng dữ liệu được điền vào mẫu khớp với những gì bạn mong đợi về những gì người dùng được phép kích hoạt.
Không bắt buộc: Thiết lập một bộ sưu tập người dùng.
Trong quá trình sử dụng cơ bản 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àbcccủa tài liệu tin nhắn. 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 cách sử dụng UID của người dùng. Để làm được việc này, bộ sưu tập người dùng của bạn phải đáp ứng các tiêu chí sau:- Bộ sưu tập phải được khoá bằng mã nhận dạng người dùng. Tức là mã nhận dạng tài liệu của mỗi tài liệu người dùng trong bộ sưu tập phải là UID của người dùng Firebase Authentication.
- Mỗi tài liệu người dùng phải có một trường
emailchứa địa chỉ email của người dùng.
Không bắt buộc: Thiết lập một bộ sưu tập mẫu.
Bạn có thể hiển thị email bằng cách sử dụng mẫu Handlebars. Để làm được việc này, bạn cần có một bộ sưu tập Cloud Firestore để chứa các mẫu của mình.
Hãy xem bài viết Sử dụng mẫu Handlebars với tiện ích Trigger Email để 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 một trong những việc sau:
Firebase bảng điều khiển: 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, 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 thao tác ghi tài liệu vào bộ sưu tập mà bạn đã định cấu hình. Email được gử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 gử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 có trường to và trường message với 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, sẽ sử dụng tham số "Địa chỉ NGƯỜI 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, sẽ sử dụng tham số "Địa chỉ TRẢ LỜI mặc định" đã định cấu hình.
- to: Một địa chỉ email của người nhận hoặc một mảng chứa nhiều địa chỉ email của người nhận.
- toUids: Một mảng chứa UID của người nhận.
- cc: Một địa chỉ email của người nhận hoặc một mảng chứa nhiều địa chỉ email của người nhận.
- ccUids: Một mảng chứa UID của người nhận được sao chép.
- bcc: Một địa chỉ email của người nhận hoặc một mảng chứa nhiều địa chỉ email của người nhận.
- bccUids: Một mảng chứa UID của người nhận được sao chép ẩn.
- 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 gửi email dựa trên
UID của người dùng được khoá bằng địa chỉ email trong một 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 bộ sưu tập Cloud Firestore cho tham số "Bộ sưu tậ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 tin nhắn
Trường message của tài liệu chứa thông tin gửi thô cho email. Trường này thường chỉ được điền bởi mã đáng tin cậy chạy trong các máy chủ hoặc Cloud Functions của riêng bạn (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 tin nhắn 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.
- attachments: 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 được mã hoá, URI dữ liệu và nút MIME được tạo trước (xin 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 về cách sử dụng nâng cao hơn của tiện ích này:
- Sử dụng mẫu Handlebars với tiện ích Trigger Email
- Quản lý trạng thái gửi bằng tiện ích Trigger Email