Deleting email in Java

Deleting email in Java

In this guide we will discuss about Deleting email in Java. As we send, forward and receive the emails, we can delete it too. The setFlag method of Message class is used to delete a particular message.

For better understanding of this example, learn the steps of sending email using JavaMail API first.

For receiving or sending the email using JavaMail API, you need to load the two jar files:

  • mail.jar
  • activation.jar

Steps for deleting the email using JavaMail API

There are total 5 steps for deleting the email. They are:

  1. Get the session object
  2. create the store object and connect to the current host
  3. create the folder object and open it
  4. Get the message to delete
  5. delete the message using setFlag method

Example of deleting email in Java

import com.sun.mail.imap.protocol.FLAGS;  
import java.io.*;  
import java.util.*;  
import javax.mail.*;  
import javax.mail.internet.*;  
  
public class DeleteMail {  
  
 public static void main(String args[]) throws Exception {  
  
 String user= "[email protected]";//change accordingly  
 String password="xxxxx";//change accordingly  
  
 //1) get the session object  
 Properties properties = System.getProperties();  
 Session session = Session.getDefaultInstance(properties);  
  
 //2) create the store object and connect to the current host   
 Store store = session.getStore("pop3");  
 store.connect("mail.adglob.in",user,password);  
  
 //3) create the folder object and open it  
 Folder folder = store.getFolder("inbox");  
  
 if (!folder.exists()) {  
 System.out.println("inbox not found");  
 System.exit(0);  
 }  
  
 folder.open(Folder.READ_WRITE);  
  
 //4) Get the message to delete  
 Message[] msg = folder.getMessages();  
  
 //System.out.println((messages.length+1)+" message found");  
 for (int i = 0; i < msg.length; i++) {  
   System.out.println("--------- " + (i + 1) + "------------");  
   String from = InternetAddress.toString(msg[i].getFrom());  
   
   if (from != null) {  
     System.out.println("From: " + from);  
   }  
  
   String replyTo = InternetAddress.toString(  
   msg[i].getReplyTo());  
   if (replyTo != null) {  
    System.out.println("Reply-to: " + replyTo);  
   }  
  
   String to = InternetAddress.toString(  
   msg[i].getRecipients(Message.RecipientType.TO));  
    
   if (to != null) {  
    System.out.println("To: " + to);  
   }  
  
   String subject = msg[i].getSubject();  
   if (subject != null) {  
    System.out.println("Subject: " + subject);  
   }  
   Date sent = msg[i].getSentDate();  
   if (sent != null) {  
    System.out.println("Sent: " + sent);  
   }  
   System.out.println("Message : ");  
   System.out.println(msg[i].getContent());  
  
 }//end of for loop  
  
  // get the message number to delete (optional)  
  System.out.println("Enter message number to delete :");  
  BufferedReader br = new BufferedReader(new InputStreamReader(System.in));  
  String no = br.readLine();  
  //5) delete the message using setFlag method  
  msg[Integer.parseInt(no) - 1].setFlag(FLAGS.Flag.DELETED, true);  
    
  System.out.println("Message Deleted .....");  
  
  folder.close(true);  
  store.close();  
  }  
}     

As you can see in the above example, we are able to delete the email from the user mailbox. Now run this program by :

Load the jar filec:\> set classpath=mail.jar;activation.jar;.;
compile the source filec:\> javac DeleteMail.java
run byc:\> java DeleteMail

Learn More : Click Here

Leave a Reply