在heroku上运行Grails应用程序的javax.mail异常

时间:2014-06-18 15:33:21

标签: email grails heroku

我在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服务之上构建邮件功能,因此,我不能使用在Heroku中没有外部SMTP服务的javax.mail?这是为什么?为什么我在没有外部SMTP服务的情况下发送电子邮件一段时间?这将是heroku插件中外部SMTP服务的最佳选择吗?

由于

1 个答案:

答案 0 :(得分:1)

嗨,Ana有几件事:

javax.mail.MessagingException: Could not connect to SMTP host : <host name> port : 25 response: 554

  1. 查看以上链接

  2. 如果这是返回的实际消息:smtpout.secureserver.net,port:25

  3. 然后我会建议下次发生的时候你打开一个终端来托管你的网站并运行

    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

    Asynchronus邮件: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