如何正确设置javamail以使用STARTTLS?

时间:2013-03-25 16:00:38

标签: java smtp javamail starttls

设置会话时,我设置了starttls.enable和.required属性,但是当连接发生时,它应该根据文档失败:

  

mail.smtp.starttls.enable boolean如果为true,则允许使用STARTTLS命令(如果服务器支持)在发出任何登录命令之前将连接切换到受TLS保护的连接。请注意,必须配置适当的信任存储,以便客户端信任服务器的证书。默认为false。“   http://javamail.kenai.com/nonav/javadocs/com/sun/mail/smtp/package-summary.html

props = new Properties();
props.put("mail.smtps.host", MAILSERV);
props.put("mail.smtps.socketFactory.port", 465);
props.put("mail.smtps.auth", "true");
props.put("mail.smtps.port", 465);
props.put("mail.smtps.socketFactory.fallback", "false");
props.put("mail.smtps.socketFactory.class","utils.DummySSLSocketFactory");
props.put("mail.smtps.quitwait", "false");
props.put("mail.smtp.starttls.enable", "true");
props.put("mail.smtp.starttls.required", "true");
Session session = Session.getInstance(props, authenticator);  


transport = session.getTransport("smtps");
transport.connect(mailServer, port, username, password);
transport.sendMessage(message, message.getAllRecipients());

那么我做错了什么让我在服务器不支持时使用Starttls?

1 个答案:

答案 0 :(得分:2)

我使用STARTTLS遇到的问题是由于我获得安全传输所致:

transport = session.getTransport("smtps");

将其更改为“smtp”后,我可以使用STARTTLS。