Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

how to send HTML email

I have to send HTML file via email but not as attachment.

Message simpleMessage = new MimeMessage(mailSession); try {    fromAddress = new InternetAddress(from);    toAddress = new InternetAddress(to);  } catch (AddressException e) {    // TODO Auto-generated catch block    e.printStackTrace(); }  try {     simpleMessage.setFrom(fromAddress);     simpleMessage.setRecipient(RecipientType.TO, toAddress);      simpleMessage.setSubject(subject);     simpleMessage.setText(text);      Transport.send(simpleMessage); } catch (MessagingException e) {     // TODO Auto-generated catch block     e.printStackTrace(); } 

It is sending email simply with text message. I want to send HTML content which is stored in another file but not as attachment

like image 320
Prerna Avatar asked Mar 07 '11 17:03

Prerna


People also ask

Can you send HTML files via email?

The most important thing to know about HTML email is that you can't just attach an HTML file and a bunch of images to a message, then click send. Most of the time, your recipient's email application will break all the paths to your image files by moving your images into temporary folders on the recipient's hard drive.


1 Answers

Don't upcast your MimeMessage to Message:

MimeMessage simpleMessage = new MimeMessage(mailSession); 

Then, when you want to set the message body, either call

simpleMessage.setText(text, "utf-8", "html"); 

or call

simpleMessage.setContent(text, "text/html; charset=utf-8"); 

If you'd rather use a charset other than utf-8, substitute it in the appropriate place.

JavaMail has an extra, useless layer of abstraction that often leaves you holding classes like Multipart, Message, and Address, which all have much less functionality than the real subclasses (MimeMultipart, MimeMessage, and InternetAddress) that are actually getting constructed...

like image 141
dkarp Avatar answered Sep 22 '22 16:09

dkarp