java - 为什么我的电子邮件发送在已部署的网站上不起作用,但在我的本地主机上却可以?

标签 java spring-boot smtp gmail

几周前,我的电子邮件可以从我为表弟的企业创建的网站完美发送,但现在她告诉我,她的客户每次尝试预约时都会遇到此错误。

现在我已经开始调试它,我检查了我用于发送的 gmail 是否允许每个应用程序访问它,我再次检查了 spring boot 应用程序属性等。在我的本地主机上测试它时发送电子邮件,但在部署的网站上,它给出了下图中的错误...同样,两个月前,当我进行最后一次检查时,它工作正常。它仍然工作正常,但只是在我的本地主机上。

这是我的应用程序属性的样子:

spring.mail.host=smtp.gmail.com
spring.mail.username=..
spring.mail.password=..
spring.mail.port=587
spring.mail.properties.mail.smtp.starttls.enable=true
spring.mail.properties.mail.smtp.starttls.required=true
spring.mail.properties.mail.smtp.ssl.trust=smtp.gmail.com
spring.mail.properties.mail.smtp.auth=true
spring.mail.properties.mail.smtp.connectiontimeout=5000
spring.mail.properties.mail.smtp.timeout=5000
spring.mail.properties.mail.smtp.writetimeout=5000

这是每个人都会遇到的错误的屏幕截图(网站是用heroku部署的):the thing

谢谢!

最佳答案

正如错误消息所述,存在 AuthenticationException 并且错误消息要求通过浏览器登录。

由于 2FA 已关闭,最可能的原因是他们想要显示验证码,这需要人工交互。 link我发现建议通过访问 https://accounts.google.com/DisplayUnlockCaptcha在目标帐户上将允许您手动清除验证码,然后它就可以工作。

但是我不相信手动清除验证码就足够了,因为它可能随时会回来。看来正确的方法是启用 2FA,并使用 application specific passwords .

关于java - 为什么我的电子邮件发送在已部署的网站上不起作用,但在我的本地主机上却可以?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58098402/

相关文章:

java - Guava 是否有将可迭代对象转换为唯一类型映射的方法?

bash - 如何设置 Airflow 的电子邮件配置以发送有关错误的电子邮件?

java - java中如何交换两个对象的字段?

java - SIP Mobicents - 如何在现有对话框中创建新请求? (相同的调用 ID)

java - ImageIcon 不在面板上绘制

java - 带有外部 JAR 的 Spring Boot 获取 NoClassDefFoundError

java - 使用自定义 validator 手动验证,无需默认构造函数

java - Spring Boot 2.3.1.Release 和 Cassandra DriverTimeout 问题

smtp - 如何使用 IMAP 发送邮件?

c# - SMTP 和 OAuth 2