rails3无法在生产模式下发送smtp电子邮件

时间:2013-02-26 21:55:56

标签: ruby-on-rails smtp ubuntu-12.04 email-integration

根据我在这里发布的问题:mailer error in production only我决定创建一个小型脚手架应用程序来寻找解决方案。

问题: 我不能在生产中发送带有smtp的电子邮件(新闻通讯),但它在开发中非常有效。

您可以在my github repository中找到该应用。

我刚创建了一个contact_messages脚手架和一个简单的邮件程序。

单击提交按钮以接收电子邮件后的错误日志:

Started POST "/contact_messages" for 194.XXX.XX.XXX at 2013-02-26 19:43:59 +0000
Processing by ContactMessagesController#create as HTML
  Parameters: {"utf8"=>"✓", "authenticity_token"=>"xx0nxxJ2xwxxJavvZ278EUy2TABjD9CixxNcxDqwg=",
"contact_message"=>{"name"=>"test", "email"=>"test@testemail.com", "message"=>"test1"}, "commit"=>"Create Contact message"}
Rendered contact_mailer/confirmation.text.erb (0.3ms)

Sent mail to test@testemail.com (38ms)
Completed 500 Internal Server Error in 100ms

Errno::ECONNREFUSED (Connection refused - connect(2)):
  app/controllers/contact_messages_controller.rb:46:in `create'

电子邮件会被保存,它们会列在索引中。所以数据库应该可以正常工作。

我正在使用Ubuntu 12.04,Apache,Phusion Passenger,SMTP和Gmail帐户。 这可能是服务器问题,还是我在应用程序中做错了什么?

我正在使用fail2ban和denyhost。这些工具可以阻止smtp吗?

任何帮助将不胜感激,谢谢!

2 个答案:

答案 0 :(得分:3)

默认情况下,Rails通过连接到目标SMTP服务器来发送电子邮件。请尝试使用sendmail。在config / initializers / production.rb中添加:

config.action_mailer.delivery_method = :sendmail

答案 1 :(得分:0)

我通过从mandrill更改新的密码(api-key)解决了我的问题。仍然不知道问题是什么,因为旧的问题在开发模式下工作......

工作环境:

YourApp::Application.configure do
  config.action_mailer.smtp_settings = {
    :address   => "smtp.mandrillapp.com",
    :port      => 587,
    :enable_starttls_auto => true,
    :user_name => "MANDRILL_USERNAME",
    :password  => "MANDRILL_PASSWORD", # SMTP password is any valid API key
    :authentication => 'login'
  }