Nút AWS SES

Gửi email từ một ứng dụng Web là phổ biến để thông báo cho người dùng về các sự kiện liên quan đến tương tác của họ với hệ thống, chẳng hạn như xác nhận tài khoản, đặt lại mật khẩu, xác nhận đơn hàng, v.v.

Email được gửi qua giao thức SMTP, giao thức này yêu cầu một bên là máy chủ và một bên là máy khách gửi yêu cầu đến máy chủ. Máy chủ SMTP được xử lý bởi các công ty như Yahoo, Google, AWS, v.v.

Trong bài đăng này, chúng tôi sẽ sử dụng Amazon SES [Dịch vụ email đơn giản] để gửi email từ một Nút. ứng dụng js. Theo trường hợp sử dụng, chúng tôi sẽ tạo tài khoản thường yêu cầu xác nhận qua email

điều kiện tiên quyết

Bạn phải cài đặt những công cụ này trên máy tính của mình để làm theo hướng dẫn này

  • Nút. js 12+ - Liên kết tải xuống
  • NPM hoặc Sợi - Tôi sẽ sử dụng Sợi
  • Tài khoản AWS để sử dụng Amazon SES

Thiết lập dự án

Tôi đã tạo một bản soạn sẵn để nhanh chóng bắt đầu một Nút. js với Express Framework; . Hãy sao chép nó  và làm cho nó hoạt động cục bộ


git clone //github.com/tericcabrel/node-ts-starter.git -b express node-email-ses

cd node-email-ses

cp .env.example .env

yarn install

yarn start

Điều hướng đến URL http. //máy chủ cục bộ. 4500 để xác minh nó hoạt động như mong đợi

Dự án này sử dụng gói dotenv để tải các biến môi trường từ tệp có tên .env. Kho lưu trữ chứa tệp mẫu có tên .env.example

Xây dựng mẫu email

Nội dung email là phần chứa nội dung. Nội dung có thể ở dạng văn bản thuần túy hoặc HTML. Với HTML, bạn có thể xây dựng nội dung email đẹp mắt, vậy phần đầu tiên là tạo mẫu email đó

Chúng tôi sẽ sử dụng một công cụ mẫu để tận dụng khả năng đưa các biến vào mẫu của chúng tôi. Công cụ mẫu phổ biến nhất trong Node. js là Tay lái. Hãy cài đặt nó


yarn add handlebars

Tạo một thư mục có tên là


yarn add handlebars

0, sau đó tạo một tệp

yarn add handlebars

1 và thêm mã bên dưới




    Registration confirmation
    
    
        body {
            font-family: calibri, 'DejaVu Sans', Arial, Helvetica, sans-serif;
            background-color: #cbd5e1;
        }
        .container {
            margin: 0 auto;
            width: 600px;
            padding: 10px 30px 30px 30px;
            box-shadow: 0 0 4px #ddd;
            background-color: #f3f4f6;
            border-radius: 5px;
        }
        a.link {
            border: solid 1px #0ea5e9;
            background-color: #0ea5e9;
            text-decoration: none;
            color: #fff;
            font-weight: bold;
            display: block;
            width: 400px;
            text-align: center;
            padding: 10px 0;
            margin-top: 50px;
            border-radius: 5px;
        }
        .text-blue {
            color: #0ea5e9;
        }
    


Confirm your account

Welcome {{name}} !

Your account has been created on our platform

Find your login information below:

Email address : {{email}}

To confirm the validity of your email address, please click on the link below

Confirm my account


Regards,
The AwesomeApp Team

Mã HTML này cung cấp bản xem trước bên dưới

Confirm my account


Regards,
The AwesomeApp Team

0 phải là email chúng tôi đã xác minh trước đó trong Amazon SES

Kiểm tra ứng dụng

Khởi động ứng dụng, mở Postman hoặc bất kỳ ứng dụng khách HTTP nào bạn có và gửi yêu cầu POST đến đường dẫn


yarn add handlebars

7

Confirm my account


Regards,
The AwesomeApp Team

2;

Confirm my account


Regards,
The AwesomeApp Team

3 và thêm mã bên dưới


import * as nodemailer from 'nodemailer';
import * as fs from 'fs';
import handlebars from 'handlebars';
import Mail from 'nodemailer/lib/mailer';

type EmailClientArgs = {
  to: string;
  subject: string;
  templatePath: string;
  templateData: TemplateData;
};

const sendMail = async [data: EmailClientArgs] => {
  const fromEmailAddress = process.env.FROM_EMAIL;
  const smtpHost = process.env.STMP_HOST ?? '';
  const smtpPort = parseInt[process.env.STMP_PORT ?? '587', 10];
  const smtpUser = process.env.STMP_USER ?? '';
  const smtpPassword = process.env.STMP_PASSWORD ?? '';

  try {
    const smtpTransport: Mail = nodemailer.createTransport[{
      host: smtpHost,
      port: smtpPort,
      auth: {
        user: smtpUser,
        pass: smtpPassword,
      },
    }];

    const source = fs.readFileSync[data.templatePath, { encoding: 'utf-8' }];
    const template: HandlebarsTemplateDelegate = handlebars.compile[source];
    const html: string = template[data.templateData];

    const updatedData: Mail.Options = {
      to: data.to,
      html,
      from: `Awesome App `,
      subject: data.subject,
    };

    smtpTransport.sendMail[updatedData].then[[result: nodemailer.SentMessageInfo]: void => {
      console.info[result];
    }];
  } catch [e] {
    console.error[e];
  }
};

export { sendMail };

Bây giờ đoạn mã trước để gửi email trong tệp


yarn add handlebars

8 trông như thế này

type ConfirmEmailPayload = {
  email: string;
  name: string;
  url: string;
};

app.post['/register', async [req, res] => {
  const { email, name } = req.body;

  // TODO Save user into the database

  const templateData: ConfirmEmailPayload = {
    email,
    name,
    url: 'generated_confirmation_url',
  };

  sendMail[{
    subject: 'Confirm your account',
    templateData,
    templatePath: path.join[__dirname, './email-template/confirm-account.html'],
    to: email,
  }];

  return res.send[{ message: 'User created successfully.' }];
}];


Bạn có thể sử dụng lại hàm




    Registration confirmation
    
    
        body {
            font-family: calibri, 'DejaVu Sans', Arial, Helvetica, sans-serif;
            background-color: #cbd5e1;
        }
        .container {
            margin: 0 auto;
            width: 600px;
            padding: 10px 30px 30px 30px;
            box-shadow: 0 0 4px #ddd;
            background-color: #f3f4f6;
            border-radius: 5px;
        }
        a.link {
            border: solid 1px #0ea5e9;
            background-color: #0ea5e9;
            text-decoration: none;
            color: #fff;
            font-weight: bold;
            display: block;
            width: 400px;
            text-align: center;
            padding: 10px 0;
            margin-top: 50px;
            border-radius: 5px;
        }
        .text-blue {
            color: #0ea5e9;
        }
    


Confirm your account

Welcome {{name}} !

Your account has been created on our platform

Find your login information below:

Email address : {{email}}

To confirm the validity of your email address, please click on the link below

Confirm my account


Regards,
The AwesomeApp Team

5 trong dự án của mình

Gói [lại

Amazon SES là một dịch vụ AWS tuyệt vời mà bạn có thể sử dụng để gửi email giao dịch hoặc tiếp thị từ ứng dụng của mình. Chúng tôi đã xem cách gửi email bằng giao thức SMTP nhưng lưu ý rằng chúng tôi cũng có thể sử dụng AWS SDK để gửi email

Bạn có thể tiến xa hơn bằng cách kết nối danh tính SES của mình với các chủ đề SNS để thực hiện một số hành động khi gửi email thành công, bị trả lại, v.v.

Xem tài liệu chính thức để tìm hiểu thêm về khả năng của AWS

Bạn có thể tìm mã nguồn trên kho lưu trữ GitHub

Theo dõi tôi trên Twitter hoặc đăng ký nhận bản tin của tôi để tránh bỏ lỡ các bài đăng sắp tới cũng như các mẹo và thủ thuật mà tôi thỉnh thoảng chia sẻ

Làm cách nào để gửi email bằng ses trong nodejs?

Tạo người dùng AWS IAM có quyền SES. .
Xác minh miền của bạn với AWS
Đăng ký tên miền MAIL FROM
Xác minh email người gửi
Xóa tài khoản AWS của bạn khỏi môi trường hộp cát SES
Tạo người dùng AWS IAM có quyền SES

AWS SES có bị phản đối không?

Để tăng cường bảo mật cho khách hàng Amazon SES, bắt đầu từ ngày 1 tháng 10 năm 2020, hỗ trợ Chữ ký phiên bản 3 sẽ bị tắt [không dùng nữa] trong Amazon SES, and only Signature Version 4 will be supported going forward.

AWS có hỗ trợ Nodejs không?

Nhà phát triển tạo ứng dụng serverless trong Lambda bằng Node. js 18 có thể tận dụng các tính năng mới, chẳng hạn như bản nâng cấp AWS SDK dành cho JavaScript đi kèm lên phiên bản v3 và hỗ trợ được cải thiện để triển khai Mô-đun ES bằng cách sử dụng các lớp Lambda. Bản phát hành này cũng cung cấp quyền truy cập vào Node.

AWS SES có sẵn ở Singapore không?

Amazon Simple Email Service [Amazon SES] hiện có sẵn ở 4 Khu vực AWS bổ sung bao gồm Miền Đông Hoa Kỳ [Ohio], Châu Á Thái Bình Dương [Singapore], Châu Á Thái Bình Dương [Tokyo] và Châu Á Thái Bình Dương [Seoul]

Chủ Đề