使用javax.mail通过SSL连接使用Imap接收电子邮件

使用javax.mail通过SSL连接使用Imap接收电子邮件,java,email,jakarta-mail,gmail-imap,Java,Email,Jakarta Mail,Gmail Imap,我想通过安全连接使用imap接收电子邮件。我使用javax.mailapi实现了它。但是有不同的服务器配置。我发现 1) store = session.getStore(imaps); store.connect(imap.gmail.com, username, password) 使“isSSL”为真,并使用端口993(javax.mail中的安全端口)进行连接。以下配置也证明了通过993端口的安全连接 2) properties.put("mail.imap.host",

我想通过安全连接使用imap接收电子邮件。我使用javax.mailapi实现了它。但是有不同的服务器配置。我发现

1)  store = session.getStore(imaps);
    store.connect(imap.gmail.com, username, password)
使“isSSL”为真,并使用端口993(javax.mail中的安全端口)进行连接。以下配置也证明了通过993端口的安全连接

 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);
这两种方法效果很好。你能告诉我这两者有什么不同吗?通过安全连接接收信息的正确方式是什么。 我进一步发现; “mail.imap.ssl.enable”和“mail.imap.starttls.enable”。 你能告诉我我是否也需要这两个吗

设置各种socketFactory属性。很久很久以前,JavaMail没有内置对SSL连接的支持,因此有必要将这些属性设置为使用SSL。多年来都没有这种情况;删除这些属性并简化代码。在当前版本的JavaMail中启用SSL支持的最简单方法是设置属性rty“mail.smtp.ssl.enable”改为“true”。(视情况将“smtp”替换为“imap”或“pop3”。)


您需要的所有信息都在这里是的,请阅读常见问题解答。尤其是列表。还有更多关于的信息。特别是,请参阅文件。
String host = "mail.example.com";
String username = "email@example.com";
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();