import java.io.UnsupportedEncodingException;
import java.util.Date;
import java.util.Properties;
import javax.activation.DataHandler;
import javax.activation.DataSource;
import javax.activation.FileDataSource;
import javax.mail.Authenticator;
import javax.mail.BodyPart;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Multipart;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.AddressException;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;
public class JavaMailWithImageAttachment {
static Properties mailServerProperties;
static Session getMailSession;
static MimeMessage msg;
public static void main(String args[]) throws AddressException, MessagingException {
System.out.println("\n1st ===> setup Mail Server Properties..");
final String sourceEmail = "sivasankarmsccs@gmail.com"; // requires valid Gmail id
final String password = "----------------------"; // correct password for Gmail id
final String toEmail = "sivasankarmsccs@gmail.com"; // any destination email id
Properties props = new Properties();
props.put("mail.smtp.host", "smtp.gmail.com");
props.put("mail.smtp.port", "587");
props.put("mail.smtp.auth", "true");
props.put("mail.smtp.starttls.enable", "true");
Authenticator authentication = new Authenticator() {
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(sourceEmail, password);
}
};
Session session = Session.getInstance(props, authentication);
generateAndSendEmail(
session,
toEmail,
"JavaMail API example with Image Attachment",
"Greetings, <br><br>Test email from sagan. Please find the attachment."
+ "<br><br> Regards, <br>Shiva Sagan");
}
public static void generateAndSendEmail(Session session, String toEmail, String subject,
String body) {
try {
System.out.println("\n3rd ===> generateAndSendEmail() starts..");
MimeMessage msg = new MimeMessage(session);
msg.addHeader("Content-type", "text/HTML; charset=UTF-8");
msg.addHeader("format", "flowed");
msg.addHeader("Content-Transfer-Encoding", "8bit");
msg.setFrom(new InternetAddress("sivasankarmsccs@gmail.com",
"NoReply"));
msg.setReplyTo(InternetAddress.parse("sthalavai@apptivo.co.in", false));
msg.setSubject(subject, "UTF-8");
msg.setSentDate(new Date());
msg.setRecipients(Message.RecipientType.TO,
InternetAddress.parse(toEmail, false));
// Create the message body part
BodyPart messageBodyPart = new MimeBodyPart();
messageBodyPart.setContent(body, "text/html");
// Create a multipart message for attachment
Multipart multipart = new MimeMultipart();
// Set text message part
multipart.addBodyPart(messageBodyPart);
messageBodyPart = new MimeBodyPart();
// Valid file location
String filename = "wall.jpg";
DataSource source = new FileDataSource(filename);
messageBodyPart.setDataHandler(new DataHandler(source));
messageBodyPart.setFileName(filename);
// Trick is to add the content-id header here
messageBodyPart.setHeader("Content-ID", "image_id");
multipart.addBodyPart(messageBodyPart);
System.out.println("\n4th ===> third part for displaying image in the email body..");
messageBodyPart = new MimeBodyPart();
messageBodyPart.setContent("<br><h3>Attachments : </h3>"
+ "<img src='cid:image_id'>", "text/html");
multipart.addBodyPart(messageBodyPart);
msg.setContent(multipart);
System.out.println("\n5th ===> Finally Send message..");
// Finally Send message
Transport.send(msg);
System.out
.println("\n6th ===> Email Sent Successfully With Image Attachment. Check your email now..");
System.out.println("\n7th ===> generateAndSendEmail() ends..");
} catch (MessagingException e) {
e.printStackTrace();
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
}
}
Output:
import java.util.Date;
import java.util.Properties;
import javax.activation.DataHandler;
import javax.activation.DataSource;
import javax.activation.FileDataSource;
import javax.mail.Authenticator;
import javax.mail.BodyPart;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Multipart;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.AddressException;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;
public class JavaMailWithImageAttachment {
static Properties mailServerProperties;
static Session getMailSession;
static MimeMessage msg;
public static void main(String args[]) throws AddressException, MessagingException {
System.out.println("\n1st ===> setup Mail Server Properties..");
final String sourceEmail = "sivasankarmsccs@gmail.com"; // requires valid Gmail id
final String password = "----------------------"; // correct password for Gmail id
final String toEmail = "sivasankarmsccs@gmail.com"; // any destination email id
Properties props = new Properties();
props.put("mail.smtp.host", "smtp.gmail.com");
props.put("mail.smtp.port", "587");
props.put("mail.smtp.auth", "true");
props.put("mail.smtp.starttls.enable", "true");
Authenticator authentication = new Authenticator() {
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(sourceEmail, password);
}
};
Session session = Session.getInstance(props, authentication);
generateAndSendEmail(
session,
toEmail,
"JavaMail API example with Image Attachment",
"Greetings, <br><br>Test email from sagan. Please find the attachment."
+ "<br><br> Regards, <br>Shiva Sagan");
}
public static void generateAndSendEmail(Session session, String toEmail, String subject,
String body) {
try {
System.out.println("\n3rd ===> generateAndSendEmail() starts..");
MimeMessage msg = new MimeMessage(session);
msg.addHeader("Content-type", "text/HTML; charset=UTF-8");
msg.addHeader("format", "flowed");
msg.addHeader("Content-Transfer-Encoding", "8bit");
msg.setFrom(new InternetAddress("sivasankarmsccs@gmail.com",
"NoReply"));
msg.setReplyTo(InternetAddress.parse("sthalavai@apptivo.co.in", false));
msg.setSubject(subject, "UTF-8");
msg.setSentDate(new Date());
msg.setRecipients(Message.RecipientType.TO,
InternetAddress.parse(toEmail, false));
// Create the message body part
BodyPart messageBodyPart = new MimeBodyPart();
messageBodyPart.setContent(body, "text/html");
// Create a multipart message for attachment
Multipart multipart = new MimeMultipart();
// Set text message part
multipart.addBodyPart(messageBodyPart);
messageBodyPart = new MimeBodyPart();
// Valid file location
String filename = "wall.jpg";
DataSource source = new FileDataSource(filename);
messageBodyPart.setDataHandler(new DataHandler(source));
messageBodyPart.setFileName(filename);
// Trick is to add the content-id header here
messageBodyPart.setHeader("Content-ID", "image_id");
multipart.addBodyPart(messageBodyPart);
System.out.println("\n4th ===> third part for displaying image in the email body..");
messageBodyPart = new MimeBodyPart();
messageBodyPart.setContent("<br><h3>Attachments : </h3>"
+ "<img src='cid:image_id'>", "text/html");
multipart.addBodyPart(messageBodyPart);
msg.setContent(multipart);
System.out.println("\n5th ===> Finally Send message..");
// Finally Send message
Transport.send(msg);
System.out
.println("\n6th ===> Email Sent Successfully With Image Attachment. Check your email now..");
System.out.println("\n7th ===> generateAndSendEmail() ends..");
} catch (MessagingException e) {
e.printStackTrace();
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
}
}
Output:
No comments:
Post a Comment