gpt4 book ai didi

Java Email 在本地处理 spring 应用程序,但不在已部署的 Heroku 应用程序上工作

转载 作者:行者123 更新时间:2023-12-04 03:27:47 25 4
gpt4 key购买 nike

所以我正在尝试从 heroku 上部署的 spring 应用程序发送电子邮件。在本地运行时,电子邮件发送非常好,但在 heroku 上我收到此错误:

javax.mail.MessagingException:无法将套接字转换为 TLS;2021-04-30T14:46:49.318141+00:00 app[web.1]:嵌套异常是:2021-04-30T14:46:49.318145+00:00 app[web.1]: javax.net.ssl.SSLHandshakeException: 没有合适的协议(protocol)(协议(protocol)被禁用或密码套件不合适)2021-04-30T14:46:49.318644+00:00 app[web.1]: 在 com.sun.mail.smtp.SMTPTransport.startTLS(SMTPTransport.java:1907)2021-04-30T14:46:49.318767+00:00 app[web.1]: 在 com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:666)2021-04-30T14:46:49.318886+00:00 app[web.1]: 在 javax.mail.Service.connect(Service.java:317)2021-04-30T14:46:49.318972+00:00 app[web.1]: 在 javax.mail.Service.connect(Service.java:176)2021-04-30T14:46:49.319037+00:00 app[web.1]: 在 javax.mail.Service.connect(Service.java:125)

然而,这个错误就神奇地出现了。直到昨天,它在 heroku 上都运行良好。我猜也许 heroku 只是标记了它,因为它认为它是可疑的。有人知道任何修复方法吗?

以下是我的代码:

public static void sendEmail(User user) throws MessagingException {    
//System.out.println("Preparing to send email");
Properties properties = new Properties();

properties.put("mail.smtp.auth", "true");
properties.put("mail.smtp.starttls.enable", "true");
properties.put("mail.smtp.host", "smtp.gmail.com");
properties.put("mail.smtp.port", "587");

String myAccountEmail = "-redacted-";
String password = "-redacted-";

User recipient = user;

javax.mail.Session session = javax.mail.Session.getInstance(properties, new Authenticator() {
@Override
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(myAccountEmail, password);
}
});

Message message = prepareMessage(session, myAccountEmail, recipient);

Transport.send(message);
//System.out.println("Message sent successfully");
}

最佳答案

不确定它是否是一个合适的解决方案或者它是否适合您的情况,但过去几天我一直在研究同样的问题,解决方案是升级运行我的应用程序的 java 版本 heroku。

在应用程序根文件夹的 system.properties 文件中:

java.runtime.version=13

原来他们使用的 java 11 图像有一些旧的 SSL 版本正在运行,并且(就我而言)我们作为开发人员没有办法禁用它。

它解决了我的问题,我希望它能解决你的问题。不确定 Heroku 将来会为 Java 11 dynos 修复这个问题。

关于Java Email 在本地处理 spring 应用程序,但不在已部署的 Heroku 应用程序上工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67335989/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com