1

我可以使用以下代码示例通过 Imap 接收邮件:

URLName server = new URLName("imaps://" + username + ":"+ password + "@imap.gmail.com/INBOX");
    Session session = Session.getDefaultInstance(new Properties(), null);
    Folder folder = session.getFolder(server);
if (folder == null) 
{
    System.exit(0);
}
   folder.open(Folder.READ_ONLY);
   Message[] messages = folder.getMessages();

但有时 Imap 不提供任何服务,那时我想使用 Pop 但我无法在我的代码中使用它。使用接收邮件的其他代码不同。但在 Android 中,只有此代码有效。

我应该在此代码中更改哪些内容以使用 Pop?

4

2 回答 2

1

首先,有一个很好的 URLName 构造函数,它将所有组件片段作为单独的参数,因此您不必进行字符串连接。

从 IMAP 切换到 POP3 需要更改协议名称以及主机名。有关示例,请参阅JavaMail 常见问题解答。协议名称为“pop3s”,主机名称为“pop.gmail.com”。

最后,您应该使用 Session.getInstance 而不是 Session.getDefaultInstance。比较这两种方法的 javadocs 以了解原因。

于 2012-04-25T22:14:57.653 回答
0

这个怎么样。真的为我工作!(来源:这里

            String SSL_FACTORY = "javax.net.ssl.SSLSocketFactory";

    Properties pop3Props = new Properties();

    pop3Props.setProperty("mail.pop3.socketFactory.class", SSL_FACTORY);
    pop3Props.setProperty("mail.pop3.socketFactory.fallback", "false");
    pop3Props.setProperty("mail.pop3.port", "995");
    pop3Props.setProperty("mail.pop3.socketFactory.port", "995");

    URLName url = new URLName("pop3", "pop.gmail.com", 995, "","youremailid@gmail.com",yourpassword);
    Session session = Session.getInstance(pop3Props, null);
    Store store = new POP3SSLStore(session, url);
    try {
        store.connect();
    } catch (MessagingException e1) {
        // TODO Auto-generated catch block
        e1.printStackTrace();
    }

    Folder folder = null;
    try {
        folder = store.getDefaultFolder();

        folder = folder.getFolder("INBOX");

    } catch (MessagingException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    if (folder == null) {
        System.exit(0);
    }
    try {
        folder.open(Folder.READ_ONLY);
    } catch (MessagingException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

尝试通过存储对象检索文件夹。还要提到您要检索的文件夹是收件箱!另请注意,在设置中,端口号是 995 表单弹出。(您可以保留前六行。)

于 2012-04-26T05:18:47.170 回答