Gần như tất cả các sản phẩm phần mềm đều dựa vào email để liên lạc với người dùng của họ. Trong nhiều trường hợp, đó là kênh chính để gửi thông báo giao dịch hoặc thông báo được kích hoạt tự động bởi hành vi của người dùng trong ứng dụng. Những email giao dịch này thường bao gồm các tệp đính kèm, chẳng hạn như hóa đơn, xác nhận đơn đặt hàng hoặc bảng sao kê khác
Là nhà phát triển, bạn có quyền tạo hoặc truy xuất tệp, sau đó đính kèm tệp vào email thích hợp bằng một trong nhiều API của nhà cung cấp dịch vụ email. Tùy thuộc vào nhà cung cấp dịch vụ email của bạn, đây có thể là một nhiệm vụ khó khăn – Amazon SES, mà chúng tôi sẽ sử dụng làm ví dụ trong hướng dẫn này, sẽ không dễ dàng nếu bạn dựa vào tích hợp trực tiếp – và đối với nhiều nhà cung cấp dịch vụ email
Hãy xem cách chúng tôi có thể thực hiện việc này bằng cách sử dụng một số dịch vụ phổ biến từ Amazon Web Services [AWS]. Chúng tôi sẽ truy xuất tệp từ bộ chứa Amazon S3, sau đó đính kèm tệp đó vào email được gửi bằng Dịch vụ email đơn giản của Amazon [SES], dịch vụ này chúng tôi sẽ tích hợp với Courier để quản lý và gửi mẫu
điều kiện tiên quyết
Để hoàn thành hướng dẫn này, bạn sẽ cần một số thứ
- Đã tạo tài khoản AWS với bộ chứa S3
- Miền SES đã được xác minh
- Tài khoản Chuyển phát nhanh – đăng ký miễn phí và bao gồm 10.000 thông báo mỗi tháng
Chúng ta sẽ sử dụng Courier để tạo email và gửi qua AWS SES với tệp đính kèm được lưu trữ trong AWS S3. Sử dụng Chuyển phát nhanh cho phép chúng tôi quản lý mẫu email của mình bên ngoài mã nguồn và tận dụng các chức năng bổ sung như thử gửi lại không thành công và theo dõi quá trình gửi cũng như mức độ tương tác của người dùng
Bạn sẽ cần một nút. môi trường js v12+ để chạy mã
Định cấu hình Amazon SES làm nhà cung cấp email của bạn
Khi bạn đã tạo tài khoản Courier của mình, chúng tôi sẽ bắt đầu bằng cách định cấu hình Amazon SES làm nhà cung cấp dịch vụ email của chúng tôi. Điều này sẽ cho phép chúng tôi sử dụng API của Courier để gọi Amazon SES và gửi email mà chúng tôi sắp soạn, cùng với tệp đính kèm của chúng tôi
Đầu tiên, điều hướng đến Tích hợp và chọn AWS SES từ Danh mục tích hợp. Chúng tôi sẽ cần ID khóa truy cập và khóa truy cập bí mật từ người dùng IAM có quyền truy cập SES. Bạn có thể tìm hiểu thêm về cách tải chúng bằng Hướng dẫn dành cho nhà phát triển AWS
Tiếp theo, chúng tôi sẽ cần một “Địa chỉ Từ” cho email của chúng tôi. Đây có thể là bất kỳ địa chỉ email nào sử dụng tên miền bạn đã định cấu hình. Cuối cùng, chọn khu vực mà tài khoản SES của bạn được định cấu hình cho. Bây giờ bạn có thể nhấp vào Cài đặt và chúng tôi đã sẵn sàng tạo thông báo qua email của mình
Điều hướng đến Trình thiết kế thông báo và chọn Tạo thông báo. Nhấp vào “Thông báo không có tiêu đề” ở trên cùng bên trái để đặt tên mô tả cho thông báo của bạn – trong trường hợp này, tôi đã đặt tên cho mình là “Hóa đơn mới. ”
Bây giờ, hãy thêm email làm kênh thông báo bằng cách chọn Email và chọn AWS SES từ danh sách thả xuống. Giờ đây, chúng tôi có thể thêm Email bên dưới Kênh ở bên trái và bắt đầu thiết kế thông báo của mình
Chúng tôi sẽ thiết kế một thông báo email đơn giản. Trước tiên, hãy cập nhật dòng chủ đề thành “Hóa đơn mới“ bằng cách nhấp vào Chủ đề mới và cập nhật văn bản. Tiếp theo, chúng ta sẽ sử dụng một khối văn bản – nhấp vào chữ “T” trên thanh công cụ - để thêm một lời chào ngắn. Vui lòng sao chép-dán văn bản sau. “Xin chào {name}, hóa đơn của bạn được đính kèm bên dưới. “ Chúng tôi đang cá nhân hóa email bằng một biến “tên”, chúng tôi sẽ chuyển đến thông báo bên dưới trong đối tượng dữ liệu như một phần của việc gọi Courier API
Hiện tại như vậy là đủ, nhưng vui lòng thêm nhiều khối nội dung hơn và tiếp tục thiết kế email. Khi bạn hoàn tất, hãy nhấp vào Xuất bản thay đổi ở góc trên bên phải
Nếu muốn, bạn có thể xem trước email bằng tab Xem trước và đảm bảo các biến của bạn được tạo khuôn mẫu đúng cách. Bạn sẽ được nhắc Tạo một sự kiện thử nghiệm và sau đó bạn sẽ muốn thêm thuộc tính tên vào đối tượng JSON dữ liệu. Khi bạn lưu sự kiện thử nghiệm của mình, bạn sẽ thấy biến tên được điền trong tab Xem trước với bất kỳ giá trị nào bạn đã đặt
Điều cuối cùng chúng ta cần làm trước khi chuyển sang mã là truy xuất ID thông báo. Chúng tôi sẽ cần điều này để gửi đúng thông báo khi chúng tôi gọi Courier API sau này. Bên cạnh tên thông báo, hãy nhấp vào biểu tượng bánh răng để khởi chạy Cài đặt thông báo. Sao chép giá trị ID thông báo và lưu nó để sử dụng trong mã bên dưới
2. Viết mã gửi
Bây giờ chúng ta đã thiết lập thông báo trong Courier, chúng ta sẽ sử dụng Courier Node. js SDK để gửi nó. Chúng ta sẽ bắt đầu bằng cách tạo một dự án npm mới
> mkdir courier-send && cd courier-send
Bây giờ chúng ta có thể thêm một vài gói sẽ hỗ trợ chúng ta gọi Courier API. Chúng ta sẽ cài đặt Courier Node. js và vì chúng tôi sẽ sử dụng các biến môi trường, chúng tôi sẽ tiếp tục và cài đặt gói dotenv
> npm install @trycourier/courier dotenv
Để xử lý xác thực bằng Courier API, chúng tôi sẽ lưu trữ Mã thông báo xác thực Courier trong biến môi trường COURIER_AUTH_TOKEN bằng cách sử dụng. tập tin env. Đảm bảo không kiểm tra tệp này trong kiểm soát nguồn. Bạn có thể tìm thấy Mã thông báo xác thực chuyển phát nhanh của mình trong Cài đặt > Khóa API trong tài khoản Chuyển phát nhanh của bạn. Hãy tạo ra. env và điền nó bằng mã thông báo xác thực của bạn
> echo "COURIER_AUTH_TOKEN=YOUR_AUTH_TOKEN" > .env
Bây giờ chúng ta có thể tạo một tệp chỉ mục và mở nó trong trình chỉnh sửa yêu thích của mình. Tôi sẽ sử dụng Mã VS
Dán vào đoạn mã sau
require["dotenv"].config[];
const { CourierClient } = require["@trycourier/courier"];
const courier = CourierClient[];
Mã này sẽ tải các biến môi trường từ. env và tạo ứng dụng khách Chuyển phát nhanh bằng cách sử dụng mã thông báo xác thực của chúng tôi. Nó cũng thiết lập chức năng chính async để chúng ta có thể sử dụng async/wait. Bây giờ, hãy thêm cuộc gọi Gửi chuyển phát nhanh. Trong chức năng chính, thêm đoạn mã sau
const { messageId } = await courier.send[{
eventId: "YOUR_NOTIFICATION_ID",
recipientId: "YOUR_RECIPIENT_ID",
console.log["Sent notification: ", messageId];
Mã này sẽ gửi thông báo được chỉ định bởi eventId tới người nhận được chỉ định. Đảm bảo bạn thay thế giá trị Id sự kiện bằng Thông báo NẾU bạn đã sao chép trước đó. Bạn cũng sẽ muốn cập nhật người nhậnId thành một chuỗi duy nhất [Ví dụ: tôi sử dụng tên của mình và mã zip viết hoa toàn bộ không có dấu cách. AYDRIAN10036]. Bạn cũng sẽ muốn cập nhật email với địa chỉ email của mình. Bây giờ nếu bạn chạy cái này, bạn sẽ nhận được email mà không có tệp đính kèm. Hãy giải quyết vấn đề tiếp theo
Thêm tệp đính kèm email của bạn
Để thêm tệp đính kèm, trước tiên chúng tôi cần truy xuất tệp đó từ Bộ chứa S3 của mình và chuyển đổi nó thành chuỗi base64. Sau đó, chúng tôi sẽ có thể thêm nó vào cuộc gọi gửi ở trên bằng cách ghi đè nhà cung cấp. Mỗi nhà cung cấp có cấu hình ghi đè riêng và bạn có thể xem tất cả chúng trong Hướng dẫn tích hợp chuyển phát nhanh. Chúng tôi sẽ sử dụng tính năng ghi đè tệp đính kèm cho
Hãy bắt đầu bằng cách thêm AWS SES SDK
> npm install @aws-sdk/client-s3
Tiếp theo, chúng tôi sẽ định cấu hình các biến môi trường cần thiết để xác thực. Đối với điều này, bạn sẽ cần lấy thông tin đăng nhập AWS của mình. Chúng bao gồm ID khóa truy cập và khóa truy cập bí mật. Bạn có thể tìm hiểu thêm về cách tải chúng trên Hướng dẫn dành cho nhà phát triển AWS. Đảm bảo rằng người dùng IAM mà bạn đang sử dụng có ít nhất S3 Read Access
mở của bạn. env và thêm các dòng sau và thay thế các giá trị bằng thông tin đăng nhập của bạn
AWS_ACCESS_KEY_ID=YOUR_ACCESS_KEY_ID
AWS_SECRET_ACCESS_KEY=YOUR_SECRET_ACCESS_KEY
Bây giờ quay lại chỉ mục. js và thêm các dòng sau vào trên chức năng chính
const S3 = require["@aws-sdk/client-s3"];
const s3Client = new S3.S3Client[{
Mã này sẽ tạo Máy khách S3 bằng thông tin xác thực của bạn được lưu trữ trong. tập tin env. Nếu bạn không sử dụng us-east-1, bạn nên thay đổi nó thành khu vực của mình. Bây giờ chúng ta có thể tạo lệnh để lấy một đối tượng từ bộ chứa S3 của bạn và yêu cầu máy khách thực thi nó
Thêm đoạn mã sau vào đầu hàm main
________số 8_______
Cập nhật các giá trị của Bộ chứa và Khóa để khớp với id bộ chứa của bạn và khóa của tệp bạn muốn đính kèm. Dữ liệu chứa tất cả những gì chúng tôi cần để đính kèm tệp, nhưng chúng tôi sẽ phải chuyển đổi Nội dung từ luồng có thể đọc được thành bộ đệm để chúng tôi có thể lấy nó dưới dạng chuỗi base64. Chúng tôi sẽ sử dụng chức năng trợ giúp để chuyển đổi nó
Thêm chức năng sau vào trên chức năng chính
function streamToBuffer[stream] {
return new Promise[[resolve, reject] => {
stream.on["error", reject];
stream.on["data", [data] => buffers.push[data]];
stream.on["end", [] => resolve[Buffer.concat[buffers]]];
Bây giờ chúng ta có thể sử dụng nó ngay sau dữ liệu trong chức năng chính
0> npm install @trycourier/courier dotenv
Và chúng ta sẽ sử dụng tất cả điều này để tạo một đối tượng đính kèm ngay bên dưới nó
1> npm install @trycourier/courier dotenv
Bây giờ, hãy cập nhật cuộc gọi Gửi chuyển phát nhanh của chúng tôi để sử dụng quyền ghi đè
2> npm install @trycourier/courier dotenv
Để tất cả chúng cùng nhau
Bây giờ nếu bạn chạy lại mã, nó sẽ lấy tệp được chỉ định từ S3, đính kèm tệp đó vào email của bạn và gửi cho bạn
Mã hoàn thành của bạn sẽ giống như sau
3> npm install @trycourier/courier dotenv
tôi hy vọng nó sẽ có ích. Nếu không sử dụng AWS SES, bạn có thể dễ dàng định cấu hình Chuyển phát nhanh để gửi tệp đính kèm bằng nhà cung cấp email khác. Đối với các nhà cung cấp dịch vụ email khác, bạn có thể xem những thay đổi nào cần được thực hiện đối với quyền ghi đè để xử lý tệp đính kèm bằng cách truy cập tài liệu Tích hợp email của Courier. Hãy thử và cho tôi biết suy nghĩ của bạn
Gặp sự cố khi bắt đầu hoặc tò mò về cách thức hoạt động của tính năng này với một nhà cung cấp dịch vụ email khác?