The following code snippets show you how to send an HTML e-mail. We begin by defining the e-mail information such as the from address, to address and the subject. The next step it to create a Properties
that will be used to create a mail Session
object. Having a Session
object we can then create a Message
using the MimeMessage
.
We use the MimeMessage.setContent(Object, String)
to set the html content of the email. Do not forget to set the content type to text/html
and also supply the character set, in the example we use charset=utf-8
.
package org.kodejava.mail;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import java.util.Properties;
public class SendHTMLEmail {
public static void main(String[] args) {
String from = "[email protected]";
String to = "[email protected]";
String subject = "Hello";
Properties props = new Properties();
props.put("mail.smtp.host", "smtp.gmail.com");
props.put("mail.transport.protocol", "smtp");
props.put("mail.smtp.starttls.enable", "true");
props.put("mail.smtp.port", "587");
props.put("mail.smtp.ssl.protocols", "TLSv1.2");
Session session = Session.getDefaultInstance(props);
try {
InternetAddress fromAddress = new InternetAddress(from);
InternetAddress toAddress = new InternetAddress(to);
Message message = new MimeMessage(session);
message.setFrom(fromAddress);
message.setRecipient(Message.RecipientType.TO, toAddress);
message.setSubject(subject);
String sb = "<head>" +
"<style type=\"text/css\">" +
" .red { color: #f00; }" +
"</style>" +
"</head>" +
"<h1 class=\"red\">" + message.getSubject() + "</h1>" +
"<p>" +
"Lorem ipsum dolor sit amet, <em>consectetur</em> adipisicing elit, " +
"sed do eiusmod tempor incididunt ut labore et dolore magna <strong>" +
"aliqua</strong>.</p>";
message.setContent(sb, "text/html; charset=utf-8");
message.saveChanges();
// Send the message to the recipient. You also need to specify the username
// and password to authenticate to the mail server.
Transport.send(message, "kodejava", "password");
} catch (MessagingException e) {
e.printStackTrace();
}
}
}
Maven Dependencies
<dependencies>
<dependency>
<groupId>javax.mail</groupId>
<artifactId>javax.mail-api</artifactId>
<version>1.5.6</version>
</dependency>
<dependency>
<groupId>javax.mail</groupId>
<artifactId>mail</artifactId>
<version>1.4.7</version>
</dependency>
</dependencies>