是starttls.enabled = true对于从java代码发送邮件是否安全?

Bau*_*han 6 java email ssl smtp

我正在从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");
Run Code Online (Sandbox Code Playgroud)

在我的另一个问题上, EJP回答道

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

但我的调试输出显示:DEBUG SMTP:尝试连接到主机"****",端口587,isSSL false.

所以我的问题听起来像

虽然我的调试输出中的isSSL = false,这样的配置是否真的安全并且SSLEJP一样使用?

UPDATE

连接代码

 Transport transport = session.getTransport("smtp");
 transport.connect("host", 587,"username", "password");
Run Code Online (Sandbox Code Playgroud)

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

javax.net.ssl.SSLException: Unrecognized SSL message, plaintext connection
Run Code Online (Sandbox Code Playgroud)

Ivo*_*men 1

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