21

我正在尝试在 Rails 应用程序中发送电子邮件。如果我使用 Gmail,它可以工作,但如果我使用 Mandrill,它就无法工作。Mandrill 出现此超时错误。不知道我做错了什么。对于 Gmail 和 Mandrill,我正在使用环境变量设置用户名和密码/api_key。两种设置之间的唯一区别是您在下面看到的内容。有任何想法吗?

Timeout::Error in RegistrationsController#create

execution expired
Rails.root: /Users/michaeljohnmitchell/Sites/pre

Application Trace | Framework Trace | Full Trace
app/models/user.rb:38:in `send_welcome_email'

山魈不工作

config.action_mailer.smtp_settings = {
  :address   => "smtp.mandrillapp.com",
  :port      => 25,
  :user_name => ENV["MANDRILL_USERNAME"],
  :password  => ENV["MANDRILL_API_KEY"]
}

Gmail 作品

config.action_mailer.smtp_settings = {
  address: "smtp.gmail.com",
  port: 587,
 authentication: "plain",
  enable_starttls_auto: true,
  user_name: ENV["GMAIL_USERNAME"],
  password: ENV["GMAIL_PASSWORD"]
}
4

2 回答 2

37

将端口 587 用于山魈,对我来说也是如此 :)

这是因为端口 25 发送纯文本,端口 587 发送 SSL 编码的电子邮件(我认为这是整个 mandrill 的想法)。

我不知道为什么他们在示例中将其设置为端口 25。

于 2012-07-16T21:03:59.610 回答
0

根据您提供的信息,您可以尝试以下几种方法:

  1. 确保每个环境文件(production.rb 和 development.rb)中都包含正确的信息

  2. 尝试硬编码 mandrill 的用户名和密码,而不是使用环境变量(仅用于测试)

于 2012-07-11T00:12:26.923 回答