Receiving email using Imap through SSL connection using javax.mail

14,244

Setting various socketFactory properties. Long, long ago JavaMail didn't have built in support for SSL connections, so it was necessary to set these properties to use SSL. This hasn't been the case for years; remove these properties and simplify your code. The easiest way to enable SSL support in current versions of JavaMail is to set the property "mail.smtp.ssl.enable" to "true". (Replace "smtp" with "imap" or "pop3" as appropriate.) https://javaee.github.io/javamail/FAQ#commonmistakes

String host = "mail.example.com";
String username = "[email protected]";
String password = "mysecretpassword";

Properties props = new Properties();
props.setProperty("mail.imap.ssl.enable", "true");

Session session = javax.mail.Session.getInstance(props);
Store store = session.getStore("imap");
store.connect(host, username, password);

Folder inbox = store.getFolder("INBOX");
inbox.open(Folder.READ_ONLY);
Message[] messages = inbox.getMessages();


inbox.close(false);
store.close();
Share:
14,244
Ricky
Author by

Ricky

Updated on June 05, 2022

Comments

  • Ricky
    Ricky almost 2 years

    I want to receive emails using imap trough secure connection. I implemented it using using javax.mail api. But there are different server configurations. As I found

    1)  store = session.getStore(imaps);
        store.connect(imap.gmail.com, username, password)
    

    Which make 'isSSL' true and use port 993 which is secure port to connect in javax.mail. Following configuration also prove secure connection through 993 port.

     2) properties.put("mail.imap.host", imap.gmail.com);
        properties.put("mail.imap.port", "993");
        Properties.put("mail.imap.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
        properties.setProperty("mail.imap.socketFactory.fallback","false");
        Properties.setProperty("mail.imap.socketFactory.port", 993);
    

    These two methods work fine. Can you please tell me what is different between these two and what is the correct way to receive messages through secure connection. Futher I found; "mail.imap.ssl.enable" and "mail.imap.starttls.enable. Can you tell me whether i needed these two also.