发送电子邮件卡在 transport.connect

Send email get stuck at transport.connect

这是代码:

Properties properties = new Properties();
properties.put("mail.transport.protocol", "smtps");
properties.put("mail.smtp.starttls.enable", "true");
properties.put("mail.smtp.host", "mail.mydomain.com");
properties.put("mail.smtp.port", "465");
properties.put("mail.smtp.auth", "true");
properties.put("mail.smtp.user", "myemail@mydomain.com");
properties.put("mail.smtp.password", "mypassword");

Session sendSession = Session.getInstance(properties);

MimeMessage message = new MimeMessage(sendSession);
message.setFrom(new InternetAddress("myemail@mydomain.com"));
message.addRecipient(Message.RecipientType.TO, new InternetAddress(to));
message.setSubject(subject);
message.setText(content);

Transport transport = sendSession.getTransport("smtp");
transport.connect("mail.mydomain.com", 465, "mydomain.com@mydomain.com", "mypassword");
transport.sendMessage(message, message.getAllRecipients());
transport.close();

这些是 SSL/TLS 设置:

Outgoing Server: mail.mydomain.com
SMTP Port: 465 

执行上面的代码,卡在了:

transport.connect("mail.mydomain.com", 465, "mydomain.com@mydomain.com", "mypassword");

什么也没发生。

为什么卡在 connect 以及如何解决?

尝试将 mail.transport.protocol 值从 smtps 更改为 smtp

您正在尝试使用用于 smtp 的端口 465。所以你必须将协议更改为 smtp 。您正在尝试以安全模式启动 TL,但您使用的是简单的 smtp 端口。

Properties properties = new Properties();
properties.put("mail.transport.protocol", "smtps");
properties.put("mail.smtp.starttls.enable", "true");
.....

尝试更改并发送邮件。

我发现了问题。

Transport transport = sendSession.getTransport("smtp");

而不是 smtp 应该是 smtps

感谢所有试图帮助我的人。