Here is an example to send an HTML email from your machine with inline image. Here we have used SMPT server via which emails are sent to our destination email address.
// first part (the html) BodyPart messageBodyPart = new MimeBodyPart(); String htmlText = "<H1>Hello</H1><img src="cid:image">"; messageBodyPart.setContent(htmlText, "text/html"); // add it multipart.addBodyPart(messageBodyPart);
// second part (the image) messageBodyPart = new MimeBodyPart(); DataSource fds = new FileDataSource("D:Javasmailapi100.png"); messageBodyPart.setDataHandler(new DataHandler(fds)); messageBodyPart.setHeader("Content-ID", "<image>");
// second part (the image) message.setContent(multipart);
import java.util.Properties; import javax.activation.DataHandler; import javax.activation.DataSource; import javax.activation.FileDataSource; import javax.mail.BodyPart; import javax.mail.Message; import javax.mail.MessagingException; import javax.mail.PasswordAuthentication; import javax.mail.Session; import javax.mail.Transport; import javax.mail.internet.InternetAddress; import javax.mail.internet.MimeBodyPart; import javax.mail.internet.MimeMessage; import javax.mail.internet.MimeMultipart; public class SendInlineImagesInEmail { public static void main(String[] args) { Properties props = new Properties(); props.put("mail.smtp.host", "smtp.gmail.com"); props.put("mail.smtp.socketFactory.port", "465"); props.put("mail.smtp.socketFactory.class","javax.net.ssl.SSLSocketFactory"); props.put("mail.smtp.auth", "true"); props.put("mail.smtp.port", "465"); final String username="dineshonjava"; final String password="***********"; Session session = Session.getDefaultInstance(props, new javax.mail.Authenticator() { protected PasswordAuthentication getPasswordAuthentication() { return new PasswordAuthentication(username,password); } }); try { Message message = new MimeMessage(session); message.setFrom(new InternetAddress("dineshonjava@gmail.com")); message.setRecipients(Message.RecipientType.TO,InternetAddress.parse("admin@dineshonjava.com")); message.setSubject("Welcome Mail Tutorial!!!"); // This mail has 2 part, the BODY and the embedded image MimeMultipart multipart = new MimeMultipart("related"); // first part (the html) BodyPart messageBodyPart = new MimeBodyPart(); String htmlText = "<H1>Hello</H1><img src="cid:image">"; messageBodyPart.setContent(htmlText, "text/html"); // add it multipart.addBodyPart(messageBodyPart); // second part (the image) messageBodyPart = new MimeBodyPart(); DataSource fds = new FileDataSource("D:Javasmailapi100.png"); messageBodyPart.setDataHandler(new DataHandler(fds)); messageBodyPart.setHeader("Content-ID", "<image>"); // add image to the multipart multipart.addBodyPart(messageBodyPart); // put everything together message.setContent(multipart); // Send the actual HTML message, as big as you like Transport.send(message); System.out.println("Mail sent successfully!!!"); } catch (MessagingException e) { throw new RuntimeException(e); } } }
As we are using the SMTP server provided by the host provider SMTP, we need to authenticate the username and password. The javax.mail.PasswordAuthentication class is used to authenticate the password.
You should see the following message on the command console:
Mail sent successfully!!!
As I’m sending an email to my gmail address through SMTP, the following mail would be received in my gmail account inbox:
Strategy Design Patterns We can easily create a strategy design pattern using lambda. To implement…
Decorator Pattern A decorator pattern allows a user to add new functionality to an existing…
Delegating pattern In software engineering, the delegation pattern is an object-oriented design pattern that allows…
Technology has emerged a lot in the last decade, and now we have artificial intelligence;…
Managing a database is becoming increasingly complex now due to the vast amount of data…
Overview In this article, we will explore Spring Scheduler how we could use it by…