title: Accessing emails from gmail using IMAP ( javamail API)
body: <p>I am trying to access emails from Gmail accounts through IMAP with the help of the JavaMail API. I was wondering why the code works for one email account but doesn't work for another. </p>
  
  <p>I am able to access the <code>Inbox</code> folder of both email accounts. But for one of the email accounts, other folders like <code>SPAM([Gmail]/Spam)</code> are not able to be accessed and it throws a <code>FolderNotFoundException</code> exception. Could anybody please explain what is going wrong? </p>
  
  <p>Thank you in advance.</p>
  
  <p>Here is the code:</p>
  
  <pre><code>import java.io.*;
  import java.util.*;
  import javax.mail.*;
  import javax.mail.Flags.Flag;
  import javax.mail.internet.*;
  
  import com.sun.mail.imap.IMAPFolder;
  import com.sun.mail.imap.IMAPMessage;
  
  
  public class FolderFetchIMAP {
  
  
      public static void main(String[] args) throws MessagingException, IOException {
          IMAPFolder folder = null;
          Store store = null;
          String subject = null;
          Flag flag = null;
          try 
          {
            Properties props = System.getProperties();
            props.setProperty("mail.store.protocol", "imaps");
  
            Session session = Session.getDefaultInstance(props, null);
  
            store = session.getStore("imaps");
            store.connect("imap.googlemail.com","myemailid@gmail.com", "password");
  
            folder = (IMAPFolder) store.getFolder("[Gmail]/Spam"); // This doesn't work for other email account
            //folder = (IMAPFolder) store.getFolder("inbox"); This works for both email account
  
  
            if(!folder.isOpen())
            folder.open(Folder.READ_WRITE);
            Message[] messages = folder.getMessages();
            System.out.println("No of Messages : " + folder.getMessageCount());
            System.out.println("No of Unread Messages : " + folder.getUnreadMessageCount());
            System.out.println(messages.length);
            for (int i=0; i &lt; messages.length;i++) 
            {
  
              System.out.println("*****************************************************************************");
              System.out.println("MESSAGE " + (i + 1) + ":");
              Message msg =  messages[i];
              //System.out.println(msg.getMessageNumber());
              //Object String;
              //System.out.println(folder.getUID(msg)
  
              subject = msg.getSubject();
  
              System.out.println("Subject: " + subject);
              System.out.println("From: " + msg.getFrom()[0]);
             System.out.println("To: "+msg.getAllRecipients()[0]);
              System.out.println("Date: "+msg.getReceivedDate());
              System.out.println("Size: "+msg.getSize());
              System.out.println(msg.getFlags());
              System.out.println("Body: \n"+ msg.getContent());
              System.out.println(msg.getContentType());
  
            }
          }
          finally 
          {
            if (folder != null &amp;&amp; folder.isOpen()) { folder.close(true); }
            if (store != null) { store.close(); }
          }
  
      }
  
  
  
  }
  </code></pre>