How to Send Email using Amazon SES in Java Spring Boot?

In this example tutorial, you will learn how to send a plain-text or HTML-based email using Amazon SES in Java Spring Boot.

Follow the steps below to send an HTML/simple text based email using AWS SES in Java Spring Boot:

Setup SES

  1. Login to the AWS Management Console and open the AWS SES console at https://console.aws.amazon.com/ses.
  2. Create identity.
  3. Verify your email address with Amazon SES.
  4. Get your AWS credentials.

Add Dependency

Add Amazon SES Java SDK dependency to your project.

For Gradle

Add the following dependency to your build.gradle file:


implementation group: 'com.amazonaws', name: 'aws-java-sdk-ses', version: '1.12.12'

For Maven

Add the following dependency to your pom.xml file:



Find the other versions of AWS Java SDK for Amazon SES in the AWS SES Maven Repository.

Add Configuration Class

Create a AwsConfiguration.java class and annotate it with @Configuration. Add a method that returns an instance of AmazonSimpleEmailService class and annotate it with @Bean annotation. The following code shows how to do so:


import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import com.amazonaws.auth.AWSStaticCredentialsProvider;
import com.amazonaws.auth.BasicAWSCredentials;
import com.amazonaws.services.simpleemail.AmazonSimpleEmailService;
import com.amazonaws.services.simpleemail.AmazonSimpleEmailServiceClientBuilder;

@Configuration
public class AwsConfiguration {

    public AWSStaticCredentialsProvider awsCredentials() {
        BasicAWSCredentials credentials =
                new BasicAWSCredentials("your-aws-access-key", "your-aws-access-secret");
        return new AWSStaticCredentialsProvider(credentials);
    }

    @Bean
    public AmazonSimpleEmailService getAmazonSimpleEmailService() {
        return AmazonSimpleEmailServiceClientBuilder.standard().withCredentials(awsCredentials())
                .withRegion("us-east-1").build();
    }
}

Create a Method to Send Email

The following code shows you how to send email using Amazon SES in Java:

Note: HTML based email content only support inline style css.


import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import com.amazonaws.services.simpleemail.AmazonSimpleEmailService;
import com.amazonaws.services.simpleemail.model.Body;
import com.amazonaws.services.simpleemail.model.Content;
import com.amazonaws.services.simpleemail.model.Destination;
import com.amazonaws.services.simpleemail.model.Message;
import com.amazonaws.services.simpleemail.model.SendEmailRequest;
@ Component
public class AwsSesExample {
    
    @Autowired
    public AmazonSimpleEmailService amazonSimpleEmailService;

    public void sendEmail() {
        
        String emailContent = "<!DOCTYPE html>\n" + 
                "<html lang=\"en\">\n" + 
                "<head>\n" + 
                "    <meta charset=\"utf-8\">\n" + 
                "    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n" + 
                "    <title>Example HTML Email</title>\n" + 
                "</head>\n" + 
                "<body style=\"background: whitesmoke; padding: 30px; height: 100%\">\n" + 
                "<h5 style=\"font-size: 18px; margin-bottom: 6px\">Dear example,</h5>\n" + 
                "<p style=\"font-size: 16px; font-weight: 500\">Greetings from TutorialsBuddy</p>\n" + 
                "<p>This is a simple html based email.</p>\n" + 
                "</body>\n" + 
                "</html>";
        
        String senderEmail = "sender@tutorialsbuddy.com";
        String receiverEmail = "receiver@example.com";
        String emailSubject = "Test Email";
        
        try {
            SendEmailRequest sendEmailRequest = new SendEmailRequest()
                    .withDestination(
                            new Destination().withToAddresses(receiverEmail))
                    .withMessage(new Message()
                            .withBody(new Body().withHtml(
                                    new Content().withCharset("UTF-8").withData(emailContent)))
                            .withSubject(new Content().withCharset("UTF-8").withData(emailSubject)))
                    .withSource(senderEmail);
            amazonSimpleEmailService.sendEmail(sendEmailRequest);

        } catch (Exception e) {
            e.printStackTrace();
        }
    }

}