【问题标题】:Receiving email using Imap through SSL connection using javax.mail使用 javax.mail 通过 SSL 连接使用 Imap 接收电子邮件
【发布时间】:2021-07-03 11:24:25
【问题描述】:

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

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. 你能告诉我我是否也需要这两个。

【问题讨论】:

标签: java email jakarta-mail gmail-imap


【解决方案1】:

设置各种 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();

【讨论】:

    猜你喜欢
    • 2014-12-20
    • 2021-08-18
    • 1970-01-01
    • 1970-01-01
    • 2012-11-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多