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

不,这是平均水平。我有一个在强大的服务器、我自己的机器,甚至是一个简单的低端服务器上运行的应用程序,它们通常总是在大约同一时间运行以发送它。它与与 Google 或您发送信息的人交谈时的身份验证有关。

一旦用户点击我屏幕上的电子邮件按钮,我的应用程序就会发送电子邮件,然后需要一两秒钟的时间才能在屏幕上弹出警报,让我知道它已成功发送。我正在使用与我的业务相关联的 Google Apps Gmail 帐户,该帐户与我的 Rails 项目中的 ActionMailer::Base.smtp_settings 中列出的信息相同。

原因通常是因为它正在连接到谷歌,对其进行身份验证并让谷歌将其发送出去。

如果使用 Linux 或 Mac,从技术上讲,您可以在自己的服务器上使用 sendmail。Sendmail 工作得更快,因为它是从服务器本身发送的,而不是连接到谷歌然后进行身份验证。

在发送大量大量电子邮件(如新闻信函等)时,我已经为客户端机器完成了此操作。这种方法的问题在于,电子邮件的标头没有来自 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 回答