Hi Friends.....
I would like to share simple examples on using of the Java Mail Api. I think it will aid to develop very interesting and useful applications.
First of all, we should download mail.jar and activation.jar file and place it in the classpath.
I will provide you three examples that shows overview of usage of this API:
package com.navin.emailapp;
import java.util.Properties;
import javax.mail.Message.RecipientType;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
/**
* @author naveen.k
*/
public class EmailApplication {
public static void main(String[] args) {
final String fromEmailId = "sender_emailid@domain.com";
final String password = "sender_password";
String host = "smtp_host";
String portNumber = "smtp_port_number";
String toEmailId = "receiver_emailid@domain.com";
String subject = "Testing email";
String message = "Hi... thist is my first mail application";
Properties pro=new Properties();
pro.put("mail.smtp.user", fromEmailId);
pro.put("mail.smtp.host", host);
pro.put("mail.smtp.port", portNumber);
pro.put("mail.smtp.starttls.enable", "true");
pro.put("mail.smtp.auth", "true");
pro.put("mail.smtp.socketfactory.port", portNumber);
pro.put("mail.smtp.socketfactory.class","javax.net.ssl.SSLSocketFactory");
pro.put("mail.smtp.socketfactory.callback", "false");
try
{
Session session=Session.getInstance(pro, null);
session.setDebug(true);
MimeMessage msg=new MimeMessage(session);
msg.setText(message);
msg.setSubject(subject);
msg.setFrom(new InternetAddress(fromEmailId));
msg.addRecipient(RecipientType.TO, new InternetAddress(toEmailId));
msg.saveChanges();
Transport trans=session.getTransport("smtp");
trans.connect(host, fromEmailId, password);
trans.send(msg, msg.getAllRecipients());
trans.close();
}
catch(Exception e ){e.printStackTrace(); }
}
}
I would like to share simple examples on using of the Java Mail Api. I think it will aid to develop very interesting and useful applications.
First of all, we should download mail.jar and activation.jar file and place it in the classpath.
I will provide you three examples that shows overview of usage of this API:
- Sending a simple Text message.
- Sending email with Attachments.
- Sending HTML content Message
I. Sending a Simple Text Email :
package com.navin.emailapp;
import java.util.Properties;
import javax.mail.Message.RecipientType;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
/**
* @author naveen.k
*/
public class EmailApplication {
public static void main(String[] args) {
final String fromEmailId = "sender_emailid@domain.com";
final String password = "sender_password";
String host = "smtp_host";
String portNumber = "smtp_port_number";
String toEmailId = "receiver_emailid@domain.com";
String subject = "Testing email";
String message = "Hi... thist is my first mail application";
Properties pro=new Properties();
pro.put("mail.smtp.user", fromEmailId);
pro.put("mail.smtp.host", host);
pro.put("mail.smtp.port", portNumber);
pro.put("mail.smtp.starttls.enable", "true");
pro.put("mail.smtp.auth", "true");
pro.put("mail.smtp.socketfactory.port", portNumber);
pro.put("mail.smtp.socketfactory.class","javax.net.ssl.SSLSocketFactory");
pro.put("mail.smtp.socketfactory.callback", "false");
try
{
Session session=Session.getInstance(pro, null);
session.setDebug(true);
MimeMessage msg=new MimeMessage(session);
msg.setText(message);
msg.setSubject(subject);
msg.setFrom(new InternetAddress(fromEmailId));
msg.addRecipient(RecipientType.TO, new InternetAddress(toEmailId));
msg.saveChanges();
Transport trans=session.getTransport("smtp");
trans.connect(host, fromEmailId, password);
trans.send(msg, msg.getAllRecipients());
trans.close();
}
catch(Exception e ){e.printStackTrace(); }
}
}
II. Sending email with Attachments :
package com.navin.emailapp;
import java.util.Date;
import java.util.Properties;
import javax.activation.DataHandler;
import javax.activation.FileDataSource;
import javax.mail.Message;
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;
/**
* @author naveen.k
*/
public class EmailApplication2 {
public static void main(String[] args) {
String fromEmailId = "sender_emailid@domain.com", password = "sender_password",
host = "smtp_host", port = "smtp_port_number",
toEmailId = "receiver_emailid@domain.com",
subject = "Testing attachment email",
message = "This is my second mail application",
filename = "d:/test.txt";
// if you would like to use the above mention properties, those are applicable here also
Properties props = new Properties();
props.put("mail.smtp.starttls.enable", "true");
try {
Session session = Session.getDefaultInstance(props, null);
session.setDebug(true);
MimeMessage msg = new MimeMessage(session);
msg.setSubject(subject);
msg.setFrom(new InternetAddress(fromEmailId));
msg.addRecipient(Message.RecipientType.TO, new InternetAddress(toEmailId));
// create and fill first message part
MimeBodyPart mbp1 = new MimeBodyPart();
mbp1.setText(message);
// create second message part
MimeBodyPart mbp2 = new MimeBodyPart();
// attach the file to message
FileDataSource fds = new FileDataSource(filename);
mbp2.setDataHandler(new DataHandler(fds));
mbp2.setFileName(fds.getName());
//create multipart and add contents to it
MimeMultipart mp = new MimeMultipart();
mp.addBodyPart(mbp1);
mp.addBodyPart(mbp2);
//add multipart to message
msg.setContent(mp);
msg.setSentDate(new Date());
msg.saveChanges();
Transport transport = session.getTransport("smtp");
transport.connect(host, fromEmailId, password);
transport.sendMessage(msg, msg.getAllRecipients());
transport.close();
} catch (Exception ex) {ex.printStackTrace();}
}
}
III. Sending HTML content Messages:
This example is same as the above examples except setting "javax.mail.internet.MimeMessage" content type to "text/html".
The snippet is provided below, by skipping the entire code to avoid confusion and for making the major part clear..... :)
/**..... the code is totally same as I example .....**/
MimeMessage msg=new MimeMessage(session);
msg.setSubject(subject);
msg.setFrom(new InternetAddress(fromEmailId));
msg.addRecipient(RecipientType.TO, new InternetAddress(toEmailId));
msg.setContent("<h1>Test HTML content </h1>","text/html");
msg.saveChanges();
/**..... the code is totally same as I example .....**/
You can find the gmail setting at https://support.google.com/mail/bin/answer.py?hl=en&answer=13287
Download my sample application jar here. Please, maintain the same folder structure and run the 'NaveenEmailApp.jar'.
package com.navin.emailapp;
import java.util.Date;
import java.util.Properties;
import javax.activation.DataHandler;
import javax.activation.FileDataSource;
import javax.mail.Message;
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;
/**
* @author naveen.k
*/
public class EmailApplication2 {
public static void main(String[] args) {
String fromEmailId = "sender_emailid@domain.com", password = "sender_password",
host = "smtp_host", port = "smtp_port_number",
toEmailId = "receiver_emailid@domain.com",
subject = "Testing attachment email",
message = "This is my second mail application",
filename = "d:/test.txt";
// if you would like to use the above mention properties, those are applicable here also
Properties props = new Properties();
props.put("mail.smtp.starttls.enable", "true");
try {
Session session = Session.getDefaultInstance(props, null);
session.setDebug(true);
MimeMessage msg = new MimeMessage(session);
msg.setSubject(subject);
msg.setFrom(new InternetAddress(fromEmailId));
msg.addRecipient(Message.RecipientType.TO, new InternetAddress(toEmailId));
// create and fill first message part
MimeBodyPart mbp1 = new MimeBodyPart();
mbp1.setText(message);
// create second message part
MimeBodyPart mbp2 = new MimeBodyPart();
// attach the file to message
FileDataSource fds = new FileDataSource(filename);
mbp2.setDataHandler(new DataHandler(fds));
mbp2.setFileName(fds.getName());
//create multipart and add contents to it
MimeMultipart mp = new MimeMultipart();
mp.addBodyPart(mbp1);
mp.addBodyPart(mbp2);
//add multipart to message
msg.setContent(mp);
msg.setSentDate(new Date());
msg.saveChanges();
Transport transport = session.getTransport("smtp");
transport.connect(host, fromEmailId, password);
transport.sendMessage(msg, msg.getAllRecipients());
transport.close();
} catch (Exception ex) {ex.printStackTrace();}
}
}
III. Sending HTML content Messages:
This example is same as the above examples except setting "javax.mail.internet.MimeMessage" content type to "text/html".
The snippet is provided below, by skipping the entire code to avoid confusion and for making the major part clear..... :)
/**..... the code is totally same as I example .....**/
MimeMessage msg=new MimeMessage(session);
msg.setSubject(subject);
msg.setFrom(new InternetAddress(fromEmailId));
msg.addRecipient(RecipientType.TO, new InternetAddress(toEmailId));
msg.setContent("<h1>Test HTML content </h1>","text/html");
msg.saveChanges();
/**..... the code is totally same as I example .....**/
You can find the gmail setting at https://support.google.com/mail/bin/answer.py?hl=en&answer=13287
Download my sample application jar here. Please, maintain the same folder structure and run the 'NaveenEmailApp.jar'.
No comments:
Post a Comment