Java邮件通过TLS(Java Mail over TLS)

2019-08-03 22:42发布

我试图通过TLS连接从我的程序发送电子邮件。 这里是我的代码

    final String username = "XXXXXX";
    final String password = "XXXXX"; 
    Properties props = new Properties();
    props.put("mail.transport.protocol", "smtp");
    props.put("mail.smtp.starttls.enable","true");
    props.put("mail.smtp.auth", "true");
    props.put("mail.smtp.host", "mail.xxxx.com");
    props.put("mail.smtp.port", "587");

    Session session = Session.getInstance(props,
            new javax.mail.Authenticator() {
              protected PasswordAuthentication getPasswordAuthentication() {
                  return new PasswordAuthentication(username, password);
              }
            });

    Message message = new MimeMessage(session);
    message.setFrom(new InternetAddress("from@xxxx.com"));
    message.setRecipients(Message.RecipientType.TO,
        InternetAddress.parse(to_address));
    message.setSubject("Test Mail"); 
    message.setText("TestMail ");
    Transport.send(message)

我的电子邮件网关与接收邮件设置启用SSL和传出与端口587启用TLS我能够在Outlook中配置此设置,它的正常工作。 但通过我的java程序它说:“连接被拒绝”。 帮助表示赞赏!

最后的工作:

我用InstallCert程序导入证书模板来生成jssecacerts文件,我添加的文件到我的/ JRE / lib / security中/路径。 这里是我工作的代码

    properties.put("mail.transport.protocol", "smtp");
    properties.put("mail.smtp.host", "XXXXXX");  
    properties.put("mail.smtp.port", "465"); 
    properties.put("mail.smtp.ssl.enable", true);
    properties.put("mail.smtp.socketFactory.port", "465");
    properties.put("mail.smtp.socketFactory.class","javax.net.ssl.SSLSocketFactory");
    properties.put("mail.smtp.socketFactory.fallback", "false"); 
    properties.put("mail.smtp.quitwait", "false"); 
    properties.put("mail.smtp.auth", "true"); 

Answer 1:

您需要使用smtps协议,而不是smtp

props.put("mail.transport.protocol", "smtps");
props.put("mail.smtps.starttls.enable","true");
props.put("mail.smtps.auth", "true");
props.put("mail.smtps.host", "mail.xxxx.com");
props.put("mail.smtps.port", "587");

你也可以尝试specificly设置协议RFC822,这有助于一些时间

props.put("mail.transport.protocol.rfc822", "smtps");


文章来源: Java Mail over TLS
标签: java email ssl