Ric*_*cky 4 java email jakarta-mail gmail-imap
我想通过安全连接使用 imap 接收电子邮件。我使用 javax.mail api 实现了它。但有不同的服务器配置。正如我发现的
// 1)
store = session.getStore(imaps);
store.connect("imap.gmail.com", username, password);
Run Code Online (Sandbox Code Playgroud)
这使得“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);
Run Code Online (Sandbox Code Playgroud)
这两种方法效果很好。您能否告诉我这两者之间有什么不同,以及通过安全连接接收消息的正确方法是什么。我进一步发现;“mail.imap.ssl.enable”和“mail.imap.starttls.enable”。你能告诉我我是否也需要这两个。
设置各种 socketFactory 属性。很久很久以前,JavaMail 还没有内置对 SSL 连接的支持,因此有必要设置这些属性才能使用 SSL。这种情况已经很多年没有出现过了。删除这些属性并简化您的代码。在当前版本的 JavaMail 中启用 SSL 支持的最简单方法是将属性“mail.smtp.ssl.enable”设置为“true”。(根据需要将“smtp”替换为“imap”或“pop3”。) https://javaee.github.io/javamail/FAQ#commonmistakes
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();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
22318 次 |
| 最近记录: |