1

メールあたり平均約2000ミリ秒です。これは正常ですか?アプリの時間の例をいくつか教えてください。メールは問題なく届きます。おそらく DelayedJob または SendGrid のような SMTP リレーを使用する必要があることはわかっていますが、その方法が長すぎて根本的な問題があると推測しています。

2012-06-13T21:28:55+00:00 app web.1 - - Sent mail to ... (7856ms)
2012-06-13T21:28:57+00:00 app web.1 - - Sent mail to ... (2003ms)
2012-06-13T22:24:42+00:00 app web.1 - - Sent mail to ... (3094ms)
2012-06-13T22:24:43+00:00 app web.1 - - Sent mail to ... (1722ms)
2012-06-14T02:20:37+00:00 app web.1 - - Sent mail to ... (5932ms)
2012-06-14T02:22:16+00:00 app web.1 - - Sent mail to ... (1830ms)
2012-06-14T02:22:18+00:00 app web.1 - - Sent mail to ... (1740ms)

そうでない場合、どうすれば時間がかかるものをデバッグできますか?

(このデータを収集するために動揺したlogentries )

後世のための私のSMTP設定:

ActionMailer::Base.smtp_settings = {
  :address => "smtp.gmail.com",
  :port => 587,
  :domain => "example.com",
  :authentication => "plain",
  :user_name => "mail@example.com",
  :password => "...",
  :enable_starttls_auto => true 
}
4

1 に答える 1

1

いいえ、これは平均です。私は強力なサーバー、自分のマシン、さらには単純なローエンドサーバーで実行したアプリを持っており、それらは通常、送信するためにほぼ同時に実行されました。それは、グーグルと話しているときの認証、またはあなたがそれを送信している人と関係があります。

ユーザーが画面のメールボタンを押すとすぐにアプリがメールを送信します。その後、アラートが画面にポップアップ表示され、正常に送信されたことを通知します。RailsプロジェクトのActionMailer::Base.smtp_settingsにリストされているのと同じ種類の情報を使用して、ビジネスに関連付けたGoogleAppsGmailアカウントを使用しています。

その理由は通常、Googleに接続し、認証し、Googleに送信させるためです。

LinuxまたはMacを使用している場合は、技術的には独自のサーバーでsendmailを使用できます。Sendmailは、Googleに接続して認証するのではなく、サーバー自体から送信するため、より高速に動作します。

ニュースレターなどの大量の電子メールを送信するときに、クライアントマシンに対してこれを実行しました。このアプローチの問題は、メールのヘッダーにGmailやHotmailなどの実際のメールサーバーからの認証がないことです。これは、メールを送信した人が実際にgoogle / hotmail/etcサーバーから送信したことを証明するものです。真に本物ではないため、スパムと見なされます。私がちょうど見つけたこのもののように、それを行う方法についてのガイドがたくさんあります:

http://raflabs.com/blogs/silence-is-foo/2011/02/07/configuring-rails-3s-actionmailer-work-sendmail-debian/

使用できるものは他にもたくさんありますが、それはあなたの働き方によって異なります。

ただし、このルートを使用すると、メールがスパムと見なされる可能性があるので注意してください。クライアントがそれを取得することを知っている場合でも、通常は問題なく通過します。

それでも現在使用している方法でメールを送信したい場合は、バックグラウンドでキューによってメールを処理することをお勧めします。そうすれば、より高速になり、ユーザーが操作するときに遅延が発生することはありません。アプリ。

それがあなたの質問に役立ち、答えてくれることを願っています。

于 2012-06-14T15:16:46.293 に答える