【问题标题】:Can't get Mandrill to send emails from Rails App无法让 Mandrill 从 Rails 应用程序发送电子邮件
【发布时间】:2012-07-06 13:52:47
【问题描述】:

我正在尝试在 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"]
}

【问题讨论】:

    标签: ruby-on-rails


    【解决方案1】:

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

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

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

    【讨论】:

    • 硬编码可用于测试您是否遇到环境变量问题。
    • 在测试您的开发环境时,这可能是一个好主意。 Naoise Golden 可能的意思是,您应该始终非常小心,不要在测试期间对 git 进行任何更改,以免暴露您的用户名或密码。
    • 提示:使用 ENV.fetch("REQUIRED_ENV_VAR") 确保设置了 env var
    【解决方案2】:

    为山魈使用端口 587,我也遇到了同样的情况:)

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

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

    【讨论】:

    • 我遇到了一个类似的问题,即由于 Net::OpenTimeout,一些电子邮件已发送出去,而另一些则失败了。切换到端口 587 可以解决此问题。也许每个人和他们的母亲都在使用 25,所以那个端口上的流量太多了?
    猜你喜欢
    • 2014-08-11
    • 2014-01-17
    • 2015-04-11
    • 2015-04-23
    • 2015-08-25
    • 2015-03-26
    • 2015-08-24
    • 2015-02-12
    • 2014-09-03
    相关资源
    最近更新 更多