3

我正在尝试从 gmail 帐户的收件箱中获取未读邮件。我写了一个小演示程序,发现Gmail的pop3在多种情况下表现异常

  • 当您尝试获取可用文件夹的列表时,Pop3 仅返回收件箱而不是所有标签,而 IMAP 正确。我在这里嵌入代码。

POP3

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 文件夹列表

地图

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 文件夹列表

  • 即使在检索邮件时,当我放置未读邮件过滤器时,gmail 也会返回许多已读邮件,这些邮件甚至不是收件箱的一部分,而是长期存档的邮件。另一方面,IMAP 的行为符合预期。

附加信息:我只为新邮件启用了 pop3,而不是从一开始就启用

我是用错了pop3还是在gmail中坏了?

4

1 回答 1

0

显然,POP3 不处理文件夹。访问 Exchange 邮箱时我遇到了同样的问题 - IMAP 获取文件夹,POP3 只获取收件箱。

我在这里找到了更多信息:如何使用 POP3 检索 gmail 子文件夹/标签?

于 2013-08-29T13:32:08.930 回答