2013-06-03 4 views
2

Я пытаюсь получить непрочитанную почту из INBOX из учетной записи gmail. Я написал небольшую демонстрационную программу и обнаружил, что pop3 Gmail ведет себя неожиданно в ряде ситуацийGmail Imap vs Pop3 при использовании JavaMail API

  • При попытке получить список доступных папок, Pop3 возвращает только INBOX, а не все ярлыки в то время как IMAP делает это правильно , Я здесь код здесь.

РОР3

public static Result getPop3FolderList() 
{ 
    Properties props = System.getProperties(); 
    props.put("mail.store.protocol", "pop3s"); 
    props.put("mail.pop3.host", "pop.gmail.com");  
    props.put("mail.pop3.user", Application.email); 
    props.put("mail.pop3.socketFactory", 995); 
    props.put("mail.pop3.socketFactory.class", "javax.net.ssl.SSLSocketFactory"); 
    props.put("mail.pop3.port", 995); 

    Session session = Session.getInstance(props,new Authenticator() { 
     @Override 
     protected PasswordAuthentication getPasswordAuthentication() { 
      return new PasswordAuthentication(Application.email, Application.pwd); 

     } 
    }); 

    try{ 
     Store store=session.getStore("pop3"); 
     store.connect(Application.email,Application.pwd); 

     javax.mail.Folder[] folders = store.getDefaultFolder().list("*"); 

     String opHtml = "<ul>"; 
     for (javax.mail.Folder folder : folders) { 
      if ((folder.getType() & javax.mail.Folder.HOLDS_MESSAGES) != 0) { 
       opHtml += "<li>" + folder.getFullName()+ "+" + folder.getMessageCount() + "</li>"; 
      } 
     } 
     opHtml += "</ul>"; 
     return ok(opHtml).as("text/html"); 
    } catch(MessagingException e) { 
     return ok("Error in getting list.<br />" + e.getMessage()).as("text/html"); 
    } 
} 

POP3 Folder List

IMAP

public static Result getImapFolderList() 
{ 
    Properties props = System.getProperties(); 
    props.setProperty("mail.store.protocol", "imaps"); 
    try { 
     Session session = Session.getInstance(props,new Authenticator() { 
     @Override 
     protected PasswordAuthentication getPasswordAuthentication() { 
      return new PasswordAuthentication(Application.email, Application.pwd); 
     } 
     }); 

     javax.mail.Store store = session.getStore("imaps"); 
     store.connect("imap.gmail.com", Application.email, Application.pwd); 
     javax.mail.Folder[] folders = store.getDefaultFolder().list("*"); 

     String opHtml = "<ul>"; 
     for (javax.mail.Folder folder : folders) { 
      if ((folder.getType() & javax.mail.Folder.HOLDS_MESSAGES) != 0) { 
       opHtml += "<li>" + folder.getFullName()+ ":" + folder.getMessageCount() + "</li>"; 
      } 
     } 
     opHtml += "</ul>"; 
     return ok(opHtml).as("text/html"); 
    } catch (MessagingException e) { 
     return ok("Error in getting list.<br />").as("text/html"); 
    } 
} 

IMAP Folder List

  • Даже при получении почты, когда я помещаю фильтр непрочитанных писем, gmail возвращает несколько прочитанных писем, которые даже не являются частью входящих, а длинных архивных. IMAP, с другой стороны, ведет себя нормально.

Дополнительная информация: Я включил pop3 только для новой почты, а не с самого начала

Am I с использованием pop3 неправильно или она нарушена в Gmail?

ответ

0

По-видимому, POP3 не обрабатывает папки. У меня была та же проблема при доступе к почтовым ящикам Exchange - IMAP получает папки, POP3 получает только входящие.

Я нашел больше информации здесь: How to retrieve gmail sub-folders/labels using POP3?

Смежные вопросы