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
- Login to the AWS Management Console and open the AWS SES console at https://console.aws.amazon.com/ses.
- Create identity.
- Verify your email address with Amazon SES.
- 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 = "[email protected]";
String receiverEmail = "[email protected]";
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();
}
}
}