我在 Heroku 上有一个 Grails 应用程序,突然我开始收到这个异常,当我发送一封电子邮件时:javax.mail.MessagingException:
Could not connect to SMTP host: smtpout.secureserver.net, port: 25, response: 554
我重新启动了我的应用程序,一切恢复正常,Heroku 再次发送邮件,但由于我没有对我的代码做任何事情,我想事情随时可能再次出现故障。
我正在使用 javax.mail 发送我的电子邮件,使用 grails 邮件插件,它可以在其他服务器上完美运行。
我在 Heroku 支持中读到我需要使用外部 SMTP 服务,但它也说我可以使用 javax.mail 在外部 SMTP 服务之上构建邮件功能,所以,我不能使用 javax.mail 没有Heroku中的外部SMTP服务?这是为什么?为什么我可以在没有外部 SMTP 服务的情况下发送一段时间的电子邮件?对于heroku插件中的外部SMTP服务,这将是最佳选择吗?
谢谢
最佳答案
嗨,安娜有几件事:
javax.mail.MessagingException: Could not connect to SMTP host : <host name> port : 25 response: 554
然后我建议下次发生时你打开一个终端到托管你网站的盒子并运行
telnet smtpout.secureserver.net 25
或者
nc -z -v smtpout.secureserver.net 25
这是我的本地主机检查:
nc -z -v localhost 25
nc: connect to localhost port 25 (tcp) failed: Connection refused
nc -z -v localhost 22
Connection to localhost 22 port [tcp/ssh] succeeded!
我也想看看
netstat -plant |grep ":25"
我认为这可能是如果它是一个外部 smtp 服务器它被淹没并且不能接受更多的连接,它可能是你的应用程序已经淹没了它并导致它没有更多的连接池并且重新启动已经删除了所有等待任务
也许值得编写一个 cron 条目来检查在任何时候打开了多少传出 smtp 连接并超过一定数量以提醒您 - 这样您就可以看到它何时到来
以防万一它再次发生 - 你可以研究一些事情:
我可能会开始查看底部的测试插件并建立一个演示站点来尝试弄清楚发生了什么 -
也可能与发送到电子邮件的内容有关,为什么它崩溃了 - 一些不正确的东西等等......(所以尝试捕捉当时发生的事情可能会真正有用)
grails-tcpmon http://grails.org/plugin/tcpmon
重要邮件:http://grails.org/plugin/sendgrid http://grails.org/plugin/postmark
异步邮件:http://grails.org/plugin/asynchronous-mail
使用 log4j 发送电子邮件:
http://www.nofluffjuststuff.com/blog/burt_beckwith/2010/02/using_gmail_with_a_log4j_smtp_appender_in_grails
http://www.intelligrape.com/blog/2012/08/13/send-mail-via-log4j-with-smtp-appender/
测试:
http://grails.org/plugin/greenmail
http://grails.org/plugin/dumbster
关于email - 在 heroku 上运行 Grails 应用程序的 javax.mail 异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24289615/