Gửi email với Amazon Simple Email Service và Spring boot

Amazon Simple Email Service (Amazon SES) là một dịch vụ có quy mô cực kỳ linh hoạt và tiết kiệm chi phí dùng để gửi và nhận email. Amazon SES loại bỏ sự phức tạp cũng như chi phí của việc xây dựng một giải pháp email nội bộ hoặc việc cấp phép, cài đặt và vận hành một giải pháp email của bên thứ ba.

1. Giới thiệu về Amazon SES.

Amazon Simple Email Service (Amazon SES) là dịch vụ gửi email trên nền tảng đám mây được thiết kế để giúp các chuyên gia marketing kỹ thuật số và nhà phát triển ứng dụng gửi email marketing, thông báo và giao dịch. Đây là dịch vụ tin cậy, tiết kiệm chi phí dành cho các doanh nghiệp thuộc đủ mọi quy mô sử dụng email để giữ liên lạc với khách hàng của mình.

Bạn có thể sử dụng giao diện SMTP hoặc một trong các SDK của AWS để tích hợp Amazon SES trực tiếp vào các ứng dụng hiện có của bạn. Bạn cũng có thể tích hợp tính năng gửi email của Amazon SES vào trang web đang sử dụng.

2. Configuration

Đầu tiên, chúng ta sẽ xác thực email.

Ở màn hình trang chủ của Amazon SES, các bạn nhấn vào nút Create Identity để bắt đầu xác thực nhé.

Tiếp theo chúng ta chọn loại xác thực, có 2 loại là Email Address (xác thực một địa chỉ email) và Domain (xác thực một tên miền). Nếu các bạn có tên miền rồi và muốn gửi email có dạng [email protected] thì bạn chọn Domain. Còn nếu bạn chưa có tên miền và muốn dùng địa chỉ email của gmail như [email protected] thì chọn Email Address nhé.

Tiếp theo thì AWS sẽ gửi một email đến địa chỉ email bạn vừa nhập, vào email đó và nhấn vào link xác thực để được verify nhé.

Tiếp theo, chúng ta cấu hình IAM để cấp quyền truy cập vào AWS SES

IAM là viết tắt của Identity and Access Management. Đây là một dịch vụ của AWS giúp chúng ta quản lý các tài khoản, quyền truy cập của các tài khoản đó vào các dịch vụ khác của AWS.

Để cấp quyền các bạn làm như sau:

  • Vào ô tìm kiếm của AWS gõ từ khóa IAM để tìm dịch vụ IAM
  • Chọn Access Management bên sidebar bên phải -> Users -> Add users
  • Điền tên cho user và nhấn Next để qua step 2

Chọn Attach policies directly -> tìm và chọn AmazonSESFullAccess -> nhấn Next để qua step 3

  • Review lại và nhấn Create user để tạo user
  • Tiếp tục click vào user vừa tạo, chọn tab là Security credentials, scroll xuống dưới phần Access keys, chọn Create access key để tạo access key

Chọn Security credentials

Click vào Create access key

  • Ở Step 1 thì anh em chọn option là Application running outside AWS và nhấn Next

  • Ở Step 2 thì anh em có thể điền mô tả cho cái key này hoặc không, optional mà. Nhấn Next
  • Ở Step 3 lưu ý là anh em nên download cái file CSV chứa access key và secret key này về máy để dùng sau này nhé. Nhấn Download .csv file và Done để hoàn thành.

Key của chúng ta sẽ gồm 2 phần là Access key và Secret access key.

3. Gửi email với Amazon SES và Spring Boot

Bước 1: Thêm Dependency vào Maven POM

Đầu tiên, chúng ta cần thêm các dependency cần thiết vào tệp pom.xml của dự án Spring Boot của bạn. Điều này bao gồm dependency cho Spring Boot Mail Starter và AWS SDK for SES.

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-mail</artifactId>
</dependency>
<dependency>
    <groupId>com.amazonaws</groupId>
    <artifactId>aws-java-sdk-ses</artifactId>
    <version>1.11.1003</version> <!-- Phiên bản cụ thể có thể thay đổi -->
</dependency>

Bước 2: Cấu hình AWS Credentials

Tiếp theo, bạn cần cấu hình AWS Credentials (Access Key và Secret Key) và cài đặt các thuộc tính email trong tệp application.properties hoặc application.yml.

spring.mail.host=smtp.example.com
spring.mail.port=587
spring.mail.username=your-[email protected]
spring.mail.password=your-email-password
spring.mail.properties.mail.smtp.auth=true
spring.mail.properties.mail.smtp.starttls.enable=true

# AWS SES Configuration
aws.accessKey=YOUR_AWS_ACCESS_KEY
aws.secretKey=YOUR_AWS_SECRET_KEY
aws.region=us-east-1

Bước 3: Tạo Bean cho Amazon SES

Trong ứng dụng Spring Boot của bạn, bạn cần tạo một bean để sử dụng Amazon SES. Bean này sẽ được sử dụng để gửi email qua SES.

import com.amazonaws.auth.BasicAWSCredentials;
import com.amazonaws.services.simpleemail.AmazonSimpleEmailService;
import com.amazonaws.services.simpleemail.AmazonSimpleEmailServiceClient;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class AwsConfig {

    @Value("${aws.accessKey}")
    private String awsAccessKey;

    @Value("${aws.secretKey}")
    private String awsSecretKey;

    @Bean
    public AmazonSimpleEmailService amazonSimpleEmailService() {
        BasicAWSCredentials awsCredentials = new BasicAWSCredentials(awsAccessKey, awsSecretKey);
        return AmazonSimpleEmailServiceClient.builder()
                .withCredentials(new AWSStaticCredentialsProvider(awsCredentials))
                .build();
    }
}

Bước 4: Gửi Email từ Ứng dụng của bạn

Giờ đây, bạn có thể sử dụng JavaMailSender để gửi email qua SES trong ứng dụng Spring Boot của bạn. Dưới đây là ví dụ về cách gửi email từ ứng dụng của bạn:

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.stereotype.Service;

@Service
public class EmailService {

    @Autowired
    private JavaMailSender javaMailSender;

    public void sendEmail(String from ,String to, String subject, String body) {
        SimpleMailMessage message = new SimpleMailMessage();
        message.setTo(to);
        message.setFrom(from);
        message.setSubject(subject);
        message.setText(body);
        javaMailSender.send(message);
    }
}

Sử dụng EmailService để gửi email:

@Service
public class MyService {

    @Autowired
    private EmailService emailService;

    public void sendEmail() {
        String to = "[email protected]";
        String from = "[email protected]";
        String subject = "Test Email";
        String body = "This is a test email sent via AWS SES and Spring Boot.";
        emailService.sendEmail(from ,to, subject, body);
    }
}

4. Tổng kết

Trên đây là hướng dẫn cách sử dụng AWS SES để gửi email, tất nhiên là nó không thể nào nói hết được tất cả những thứ liên quan đến AWS SES, nhưng mình đã cố gắng đơn giản hết sức cho mọi người có thể đọc xong là làm được ngay luôn, còn mấy thứ khác thì có thời gian chúng ta sẽ học sau. Đúng không nào 😁

0 Shares:
5 comments
Leave a Reply

Your email address will not be published. Required fields are marked *

You May Also Like