2012-07-06 65 views
22

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

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"] 
} 

回答

37

使用端口587山魈,发生在我身上:)

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

我不知道为什么他们将它设置为端口25在他们的例子。

+1

我遇到类似的问题,其中一些电子邮件正在外出,而另一些则由于Net :: OpenTimeout而失败。切换到端口587解决了这个问题。也许每个人和他们的母亲都在使用25个,因此这个端口上的流量太大了? – idrinkpabst 2014-07-25 17:30:30

0

以下是你可以尝试根据您提供的信息的几件事情:

  1. 确保正确的信息在eac中您的环境文件(production.rb和development.rb)h的

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

+1

硬编码的用户名和密码永远不是一个好主意 – 2012-10-22 23:37:32

+1

硬编码可以用来测试你是否有环境变量的问题。 – 2012-10-27 23:43:22

+1

在测试开发环境期间,这可能是一个好主意。 Naoise Golden可能意味着你应该非常小心,不要在测试过程中对git进行任何更改,以免暴露用户名或密码。 – SoEzPz 2014-10-12 16:36:10

相关问题