3

私がここに投稿した問題によると、本番環境でのメーラーエラーのみ、解決策を見つけるために小さなスキャフォールドアプリを作成することにしました。

問題:本番環境ではsmtpを使用して(ニュースレター)メールを送信できませんが、開発環境では完全に機能します。

このアプリは私のgithubリポジトリにあります。

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をブロックできますか?

どんな助けでもありがたいです、ありがとう!

4

2 に答える 2

3

デフォルトでは、RailsはターゲットSMTPサーバーに接続して電子メールを送信します。代わりにsendmailを使用してみてください。これをconfig/initializers/production.rbに追加します。

config.action_mailer.delivery_method = :sendmail
于 2013-02-27T11:40:12.327 に答える
0

マンドリルから新しいパスワード(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'
  }
于 2013-02-27T18:13:39.083 に答える