2

アクションメーラーでメールを送信しようとするとTimeout::Error (execution expired):、コンソールにメールが送信されたと表示されますが、次のように表示されます

    Sent mail to aldeirm2@gmail.com

次に、送信された電子メールが表示され、次のエラーが表示されます。

Timeout::Error (execution expired):
  /usr/lib/ruby/1.8/timeout.rb:60:in `open'
  /usr/lib/ruby/1.8/net/smtp.rb:551:in `do_start'
  /usr/lib/ruby/1.8/net/smtp.rb:551:in `do_start'
  /usr/lib/ruby/1.8/net/smtp.rb:525:in `start'
  app/models/appointment.rb:10:in `tomorrows_appointments'
  app/models/appointment.rb:8:in `each'
  app/models/appointment.rb:8:in `tomorrows_appointments'
  app/controllers/show_appointments_controller.rb:11:in `send_email'
  -e:2:in `load'
  -e:2

Rendered rescues/_trace (35.8ms)
Rendered rescues/_request_and_response (0.3ms)
Rendering rescues/layout (internal_server_error)

ここに私の設定があります:

config.cache_classes = false
config.whiny_nils = true
config.action_controller.consider_all_requests_local = true
config.action_view.debug_rjs                         = true
config.action_controller.perform_caching             = false

config.action_mailer.raise_delivery_errors = true
config.action_mailer.delivery_method = :smtp
config.action_mailer.smtp_settings = {
  :enable_starttls_auto => true,
  :address              => "smtp.gmail.com",
  :port                 => 587,
  :domian               => "gmail.com",
  :authentication       => :login,
  :user_name            => "username",
  :password             => "blablabla",
}

また、username@gmail.comに設定authenticationして使用しようとしましたが、希望はありませんでした。:plainuser_name

何か案は

4

3 に答える 3

3

そこにタイプミスがありました。あなたは :domian => "gmail.com" と書きました。

それ以外の

:ドメイン => "gmail.com",

于 2011-01-24T12:52:50.353 に答える
1

他の誰かが同じ問題を抱えている場合:

ファイアウォールがポート 587 への送信接続を許可していることを確認してください

iptablesの場合、既存のすべてのルールを次のように一覧表示できます。

sudo iptables -L

必要なルールについては、こちらをご覧ください。

AWS インスタンスを使用している場合は、セキュリティ グループを確認してください。

于 2014-05-22T15:26:01.753 に答える
1

SMTP リクエストが時折タイムアウトするように見えますが、これはおそらくタイムアウトに設定した時間によって異なります。もう 1 つの問題は、サーバーが Gmail の SMTP サーバーと通信するのをユーザーが待機している間に Web アプリで遅延が発生することです。

gmail が新しい Rails アプリの一般的なオプションであることは知っていますが、毎日の送信制限がある特定の gmail アカウントを介してメールを送信する必要があるため、長期的な解決策ではないと思います。また、他のアカウントでも、SMTP タイムアウトが問題であることがわかりました。

現在、SendGrid を使用してメールを送信していますが、postfix を介して sendgrid をリレーホストとして使用することが好ましいオプションであることがわかりました。これは、ユーザーが web-app からより速く応答を取得し、メールが postfix を介してキューに入れられ、sendgrid を介して送信されることを意味します (したがって、タイムアウトはもうありません!)。

sendgrid の postfix のセットアップ手順については、こちらを参照してください: http://wiki.sendgrid.com/doku.php?id=postfix

次に、レール環境では、次のようなものが必要です。

config.action_mailer.delivery_method = :sendmail
config.action_mailer.sendmail_settings = {
  :location       => '/usr/sbin/sendmail',
  :arguments      => '-i -t'
}
于 2010-08-02T08:58:19.027 に答える