To send an e-mail using your Java Application is simple enough but to start with you should haveJavaMail API and Java Activation Framework (JAF) installed on your machine.
-
You can download latest version ofJavaMail (Version 1.2) from Java’s standard website.
-
You can download latest version of JAF (Version 1.1.1) from Java’s standard website.
Download and unzip these files, in the newly created top level directories you will find a number of jar files for both the applications. You need to add mail.jar and activation.jar files in your CLASSPATH.
Send a Simple E-mail
Here is an example to send a simple e-mail from your machine. It is assumed that your localhost is connected to the Internet and capable enough to send an e-mail.
Example
// File Name SendEmail.javaimport java.util.*;import javax.mail.*;import javax.mail.internet.*;import javax.activation.*;publicclassSendEmail{publicstaticvoid main(String[] args){// Recipient's email ID needs to be mentioned.String to ="abcd@gmail.com";// Sender's email ID needs to be mentionedStringfrom="web@gmail.com";// Assuming you are sending email from localhostString host ="localhost";// Get system propertiesProperties properties =System.getProperties();// Setup mail server properties.setProperty("mail.smtp.host", host);// Get the default Session object.Session session =Session.getDefaultInstance(properties);try{// Create a default MimeMessage object.MimeMessage message =newMimeMessage(session);// Set From: header field of the header. message.setFrom(newInternetAddress(from));// Set To: header field of the header. message.addRecipient(Message.RecipientType.TO,newInternetAddress(to));// Set Subject: header field message.setSubject("This is the Subject Line!");// Now set the actual message message.setText("This is actual message");// Send messageTransport.send(message);System.out.println("Sent message successfully....");}catch(MessagingException mex){ mex.printStackTrace();}}}
Compile and run this program to send a simple e-mail −
Output
$ java SendEmail Sent message successfully....
If you want to send an e-mail to multiple recipients then the following methods would be used to specify multiple e-mail IDs −
void addRecipients(Message.RecipientType type, Address[] addresses) throws MessagingException
Here is the description of the parameters −
-
type − This would be set to TO, CC or BCC. Here CC represents Carbon Copy and BCC represents Black Carbon Copy. Example:Message.RecipientType.TO
-
addresses − This is an array of e-mail ID. You would need to use InternetAddress() method while specifying email IDs.
Send an HTML E-mail
Here is an example to send an HTML e-mail from your machine. Here it is assumed that yourlocalhost is connected to the Internet and capable enough to send an e-mail.
This example is very similar to the previous one, except here we are using setContent() method to set content whose second argument is “text/html” to specify that the HTML content is included in the message.
Using this example, you can send as big as HTML content you like.
Example
// File Name SendHTMLEmail.javaimport java.util.*;import javax.mail.*;import javax.mail.internet.*;import javax.activation.*;publicclassSendHTMLEmail{publicstaticvoid main(String[] args){// Recipient's email ID needs to be mentioned.String to ="abcd@gmail.com";// Sender's email ID needs to be mentionedStringfrom="web@gmail.com";// Assuming you are sending email from localhostString host ="localhost";// Get system propertiesProperties properties =System.getProperties();// Setup mail server properties.setProperty("mail.smtp.host", host);// Get the default Session object.Session session =Session.getDefaultInstance(properties);try{// Create a default MimeMessage object.MimeMessage message =newMimeMessage(session);// Set From: header field of the header. message.setFrom(newInternetAddress(from));// Set To: header field of the header. message.addRecipient(Message.RecipientType.TO,newInternetAddress(to));// Set Subject: header field message.setSubject("This is the Subject Line!");// Send the actual HTML message, as big as you like message.setContent("<h1>This is actual message</h1>","text/html");// Send messageTransport.send(message);System.out.println("Sent message successfully....");}catch(MessagingException mex){ mex.printStackTrace();}}}
Compile and run this program to send an HTML e-mail −
Output
$ java SendHTMLEmail Sent message successfully....
Send Attachment in E-mail
Here is an example to send an e-mail with attachment from your machine. Here it is assumed that your localhost is connected to the internet and capable enough to send an e-mail.
Example
// File Name SendFileEmail.javaimport java.util.*;import javax.mail.*;import javax.mail.internet.*;import javax.activation.*;publicclassSendFileEmail{publicstaticvoid main(String[] args){// Recipient's email ID needs to be mentioned.String to ="abcd@gmail.com";// Sender's email ID needs to be mentionedStringfrom="web@gmail.com";// Assuming you are sending email from localhostString host ="localhost";// Get system propertiesProperties properties =System.getProperties();// Setup mail server properties.setProperty("mail.smtp.host", host);// Get the default Session object.Session session =Session.getDefaultInstance(properties);try{// Create a default MimeMessage object.MimeMessage message =newMimeMessage(session);// Set From: header field of the header. message.setFrom(newInternetAddress(from));// Set To: header field of the header. message.addRecipient(Message.RecipientType.TO,newInternetAddress(to));// Set Subject: header field message.setSubject("This is the Subject Line!");// Create the message part BodyPart messageBodyPart =newMimeBodyPart();// Fill the message messageBodyPart.setText("This is message body");// Create a multipar messageMultipart multipart =newMimeMultipart();// Set text message part multipart.addBodyPart(messageBodyPart);// Part two is attachment messageBodyPart =newMimeBodyPart();String filename ="file.txt";DataSource source =newFileDataSource(filename); messageBodyPart.setDataHandler(newDataHandler(source)); messageBodyPart.setFileName(filename); multipart.addBodyPart(messageBodyPart);// Send the complete message parts message.setContent(multipart );// Send messageTransport.send(message);System.out.println("Sent message successfully....");}catch(MessagingException mex){ mex.printStackTrace();}}}
Compile and run this program to send an HTML e-mail −
Output
$ java SendFileEmail Sent message successfully....
User Authentication Part
If it is required to provide user ID and Password to the e-mail server for authentication purpose, then you can set these properties as follows −
props.setProperty("mail.user", "myuser"); props.setProperty("mail.password", "mypwd");
Rest of the e-mail sending mechanism would remain as explained above.