Can't receive mails with Pop in Android

元气小坏坏 提交于 2019-12-11 09:28:48

问题


I can receive my mails with Imap with this code sample :

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();

But sometimes Imap doesn't give any service and at those times I want to use Pop but I couldn't use it with my code. It is different the other codes for using receive mail. But in Android only this code is working.

What should I change in this code to work with Pop?


回答1:


First, there's a nice URLName constructor that takes all the component pieces as separate parameters, so you don't have to do string concatenation.

Switch from IMAP to POP3 requires changing the protocol name as well as the host name. See the JavaMail FAQ for examples. The protocol name is "pop3s" and the host name is "pop.gmail.com".

Finally, you should use Session.getInstance instead of Session.getDefaultInstance. Compare the javadocs for the two methods to understand why.




回答2:


How about this one.Really worked for me!!(Source:here)

            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();
    }

Try retreiving folder via store object.And also mention that the folder you wish to retreive is INBOX!Also note that in settings,port number is 995 form pop.(You may leave the first six lines as they are.)



来源:https://stackoverflow.com/questions/10324379/cant-receive-mails-with-pop-in-android

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!