我正在尝试在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'
Mandrill不起作用
config.action_mailer.smtp_settings = {
:address => "smtp.mandrillapp.com",
:port => 25,
:user_name => ENV["MANDRILL_USERNAME"],
:password => ENV["MANDRILL_API_KEY"]
}
Gmail Works
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"]
}
答案 0 :(得分:37)
使用端口587进行mandrill,对我发生同样的事情:)
这是因为端口25正在发送纯文本,端口587发送SSL编码的电子邮件(我认为这是整个mandrill的想法)。
我不知道他们为什么在他们的例子中将它设置为端口25。
答案 1 :(得分:0)
根据您提供的信息,您可以尝试以下几项内容:
确保每个环境文件(production.rb和development.rb)中都有正确的信息
尝试硬编码mandrill的用户名和密码,而不是使用环境变量(仅用于测试)