Wednesday, March 28, 2012

Java - Sending Email

To send an email using your Java Application is simple enough but to start with you should haveJavaMail API and Java Activation Framework (JAF) installed on your machine.

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 Email:

Here is an example to send a simple email from your machine. Here it is assumed that yourlocalhost is connected to the internet and capable enough to send an email.

// File Name SendEmail.java  import java.util.*; import javax.mail.*; import javax.mail.internet.*; import javax.activation.*;  public class SendEmail {    public static void main(String [] args)    {              // Recipient's email ID needs to be mentioned.       String to = "abcd@gmail.com";        // Sender's email ID needs to be mentioned       String from = "web@gmail.com";        // Assuming you are sending email from localhost       String host = "localhost";        // Get system properties       Properties 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 = new MimeMessage(session);           // Set From: header field of the header.          message.setFrom(new InternetAddress(from));           // Set To: header field of the header.          message.addRecipient(Message.RecipientType.TO,                                   new InternetAddress(to));           // Set Subject: header field          message.setSubject("This is the Subject Line!");           // Now set the actual message          message.setText("This is actual message");           // Send message          Transport.send(message);          System.out.println("Sent message successfully....");       }catch (MessagingException mex) {          mex.printStackTrace();       }    } } 

Compile and run this program to send a simple email:

$ java SendEmail Sent message successfully.... 

If you want to send an email to multiple recipients then following methods would be used to specify multiple email 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 the array of email ID. You would need to use InternetAddress() method while specifying email IDs

Send an HTML Email:

Here is an example to send an HTML email from your machine. Here it is assumed that yourlocalhost is connected to the internet and capable enough to send an email.

This example is very similar to 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.

// File Name SendHTMLEmail.java  import java.util.*; import javax.mail.*; import javax.mail.internet.*; import javax.activation.*;  public class SendHTMLEmail {    public static void main(String [] args)    {              // Recipient's email ID needs to be mentioned.       String to = "abcd@gmail.com";        // Sender's email ID needs to be mentioned       String from = "web@gmail.com";        // Assuming you are sending email from localhost       String host = "localhost";        // Get system properties       Properties 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 = new MimeMessage(session);           // Set From: header field of the header.          message.setFrom(new InternetAddress(from));           // Set To: header field of the header.          message.addRecipient(Message.RecipientType.TO,                                   new InternetAddress(to));           // Set Subject: header field          message.setSubject("This is the Subject Line!");           // Send the actual HTML message, as big as you like          message.setContent("

This is actual message

", "text/html" ); // Send message Transport.send(message); System.out.println("Sent message successfully...."); }catch (MessagingException mex) { mex.printStackTrace(); } } }

Compile and run this program to send an HTML email:

$ java SendHTMLEmail Sent message successfully.... 

Send Attachment in Email:

Here is an example to send an email with attachment from your machine. Here it is assumed that your localhost is connected to the internet and capable enough to send an email.

// File Name SendFileEmail.java  import java.util.*; import javax.mail.*; import javax.mail.internet.*; import javax.activation.*;  public class SendFileEmail {    public static void main(String [] args)    {              // Recipient's email ID needs to be mentioned.       String to = "abcd@gmail.com";        // Sender's email ID needs to be mentioned       String from = "web@gmail.com";        // Assuming you are sending email from localhost       String host = "localhost";        // Get system properties       Properties 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 = new MimeMessage(session);           // Set From: header field of the header.          message.setFrom(new InternetAddress(from));           // Set To: header field of the header.          message.addRecipient(Message.RecipientType.TO,                                   new InternetAddress(to));           // Set Subject: header field          message.setSubject("This is the Subject Line!");           // Create the message part           BodyPart messageBodyPart = new MimeBodyPart();           // Fill the message          messageBodyPart.setText("This is message body");                    // Create a multipar message          Multipart multipart = new MimeMultipart();           // Set text message part          multipart.addBodyPart(messageBodyPart);           // Part two is attachment          messageBodyPart = new MimeBodyPart();          String filename = "file.txt";          DataSource source = new FileDataSource(filename);          messageBodyPart.setDataHandler(new DataHandler(source));          messageBodyPart.setFileName(filename);          multipart.addBodyPart(messageBodyPart);           // Send the complete message parts          message.setContent(multipart );           // Send message          Transport.send(message);          System.out.println("Sent message successfully....");       }catch (MessagingException mex) {          mex.printStackTrace();       }    } } 

Compile and run this program to send an HTML email:

$ java SendFileEmail Sent message successfully.... 

User Authentication Part:

If it is required to provide user ID and Password to the email 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 email sending mechanism would remain as explained above.


2 comments:

Anonymous said...

Uр untіl now the only competitoг thаt has any substance
to the Ipaԁ.

Take a loοk at my blog pοѕt: Ipaԁ (wiki.sc2tv.ru)

Anonymous said...

49mm and the Epіс 4 G. The Samsung
Gаlaxy Notе II says that the" lightweight design" of Samsung's new tablet is in my opinion. 5-inch screen, which is quite annoying. Lots of buyers loved the bigger screens. Read: iPhone 4 S. Galaxy S II, you should probably hold off if you were planning on buying a Galaxy S II showed no sign of [bendable screens].