8

我正在从 java 代码发送电子邮件。我的配置是

 props.put("mail.smtp.starttls.enable", "true");
 props.put("mail.smtp.host", "****"); 
 props.put("mail.smtp.auth", "true");
 props.put("mail.smtp.port", "587");

关于我的另一个问题 ,EJP回答了

发出 STARTTLS 命令后,任何使用 STARTTLS 的协议都处于 SSL 模式

但我的调试输出显示:DEBUG SMTP:试图连接到主机“****”,端口 587,isSSL false。

所以我的问题听起来像

尽管我的调试输出中有 isSSL=false ,但这样的配置真的安全并SSLEJP所说的那样使用吗?

更新

连接代码

 Transport transport = session.getTransport("smtp");
 transport.connect("host", 587,"username", "password");

当我写 的时候Transport transport = session.getTransport("smtps")我得到了

javax.net.ssl.SSLException: Unrecognized SSL message, plaintext connection
4

2 回答 2

2

设置mail.smtp.starttls.required=true 这确保使用 TLS 或连接不会发生 REF:https ://javamail.java.net/nonav/docs/api/com/sun/mail/smtp/package-summary.html

于 2016-01-20T22:45:51.710 回答
1

您仍应使用“smtp”传输,因为那是协议(smtps 不是已知协议)。SSL 用于连接。我自己与 Google 一起使用了“javax.mail”。谷歌只允许 SSL。所以我只能回答是;它有效并且很安全。我应该补充一点,“mail.smtp.starttls.enable”属性有点令人困惑。startsll 属性指的是正在发出的命令,但它应该被命名为:'mail.smtp.secure.enable'。

于 2013-08-20T11:30:09.160 回答