Click here to Skip to main content
15,908,618 members
Please Sign up or sign in to vote.
1.00/5 (2 votes)
See more:
Java
import java.util.Properties;

import javax.mail.Address;
import javax.mail.Folder;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.NoSuchProviderException;
import javax.mail.Session;
import javax.mail.Store;
import javax.mail.internet.MimeMessage.RecipientType;

public class InboxReaderIMAPLast10 {
     public static void main(String argv[]) {
          final int MAX_MESSAGES=10;
          
          String user = null;
          String password = null;
          
          for (int optind = 0; optind < argv.length; optind++) {
               if (argv[optind].equals("-U")) {
                    user = argv[++optind];
               } else if (argv[optind].equals("-P")) {
                    password = argv[++optind];
               }
          }
          
          Properties props = System.getProperties();
          props.setProperty("mail.store.protocol", "imaps");
          
          try {
               Session session = Session.getDefaultInstance(props, null);
               Store store = session.getStore("imaps");
               store.connect("imap.gmail.com", "cloudservicereport@gmail.com","ccooooll");
               System.out.println(store);

               Folder inbox = store.getFolder("Inbox");
               inbox.open(Folder.READ_ONLY);
               
               System.out.println("Total messages = " + inbox.getMessageCount());
               System.out.println("New messages = " + inbox.getNewMessageCount());
               System.out.println("unread messages = " + inbox.getUnreadMessageCount());
               System.out.println("deleted messages = " + inbox.getDeletedMessageCount());
               
               // Get the last 10 messages
               int end = inbox.getMessageCount();
               int start = end - MAX_MESSAGES + 1;
               Message messages[] = inbox.getMessages(start, end);
               
               // Reverse the ordering so that the latest comes out first
               Message messageReverse[] = reverseMessageOrder(messages);
               
               // Print the messages out
               System.out.println("message size = " + messages.length + "\n");
               int i =0;
               for (Message message : messageReverse) {
                    i++;
                    dumpMessage(i,message);
               }
          } catch (NoSuchProviderException e) {
               e.printStackTrace();
               System.exit(1);
          } catch (MessagingException e) {
               e.printStackTrace();
               System.exit(2);
          }

     }

     /*
      * reverse the order of the messages
      */
     private static Message[] reverseMessageOrder(Message[] messages) {
          Message revMessages[]= new Message[messages.length];
          int i=messages.length-1;
          for (int j=0;j<messages.length;j++,i--)>               revMessages[j] = messages; //that above mentioned error occurs here in netbeans ide

          }

          return revMessages;

     }



     private static void dumpMessage(int i, Message message) throws MessagingException {

          System.out.println(i + " Message envelope");

          System.out.println("------------------");

          // FROM

          for (Address address:message.getFrom()) {

               System.out.println("FROM: " + address.toString());

          }

          

          // TO

          for (Address address:message.getRecipients(RecipientType.TO)) {

               System.out.println("To: " + address.toString());

          }

          

          // SUBJECT

          System.out.println("Subject: " + message.getSubject() + "\n");

     }

}
Posted
Updated 1-Apr-14 8:07am
v2
Comments
Richard MacCutchan 1-Apr-14 12:52pm    
You cannot store an array into a single element.
Member 10239017 1-Apr-14 13:56pm    
Then how???
Sergey Alexandrovich Kryukov 1-Apr-14 15:20pm    
Incorrect question. To answer "how", the answerer needs to know what do you want to achieve.
—SA
Richard MacCutchan 2-Apr-14 3:59am    
Start by studying the Java language, especially the difference between an array and an array element.
Maciej Los 1-Apr-14 14:08pm    
What's the question?

1 solution

revMessages is an array.
messages is an array.

So, why would
Java
revMessages[j] = messages
work? Try:
Java
revMessages[j] = messages[i]
Instead...
 
Share this answer
 

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900