JavaMail reading recent unread mails using IMAP

前端 未结 4 1333
挽巷
挽巷 2020-12-10 02:46

I have a requirement to retrieve unread mails from Gmail. I am using Java Mail API. By default, this API retrieves mails from the oldest to newest. But I need to retrieve re

4条回答
  •  刺人心
    刺人心 (楼主)
    2020-12-10 03:41

    Here is example. Do not forget to add javax.mail in your classpath.

    import javax.mail.*;
    import javax.mail.search.FlagTerm;
    import java.util.*;
    
    public class GmailFetch {
    
      public static void main( String[] args ) throws Exception {
    
        Session session = Session.getDefaultInstance(new Properties( ));
        Store store = session.getStore("imaps");
        store.connect("imap.googlemail.com", 993, "username@gmail.com", "password");
        Folder inbox = store.getFolder( "INBOX" );
        inbox.open( Folder.READ_ONLY );
    
        // Fetch unseen messages from inbox folder
        Message[] messages = inbox.search(
            new FlagTerm(new Flags(Flags.Flag.SEEN), false));
    
        // Sort messages from recent to oldest
        Arrays.sort( messages, ( m1, m2 ) -> {
          try {
            return m2.getSentDate().compareTo( m1.getSentDate() );
          } catch ( MessagingException e ) {
            throw new RuntimeException( e );
          }
        } );
    
        for ( Message message : messages ) {
          System.out.println( 
              "sendDate: " + message.getSentDate()
              + " subject:" + message.getSubject() );
        }
      }
    }
    

提交回复
热议问题