电子邮件不发送到生产中

时间:2013-12-13 17:42:03

标签: ruby-on-rails email heroku

在config / environments / production.rb

  BASE_URL = "http://proproots.herokuapp.com/"
  STATIC_WEBSITE = "http://proproots.herokuapp.com/"
  REDIRECTING_URL = "http://proproots.herokuapp.com/"

  config.action_mailer.default_url_options = { :host => 'proproots.herokuapp.com' }
  config.action_mailer.raise_delivery_errors = true
  ActionMailer::Base.delivery_method = :smtp
  ActionMailer::Base.smtp_settings = {
    :address              => "smtp.gmail.com",
    :port                 => "587",
    :domain               => "www.gmail.com",
    :user_name            => "sample@gmail.com",
    :password             => "password",
    :authentication       => "login",
    :enable_starttls_auto => true,
    :openssl_verify_mode  => 'none'
  }

下面给出的服务器日志

2013-12-13T17:33:49.134524+00:00 heroku[router]: at=info method=GET path=/favicon.ico host=proproots.herokuapp.com fwd="122.164.115.170" dyno=web.1 connect=6ms service=5ms status=304 bytes=0

它在开发环境中工作正常,但在生产中无效,请有人尝试解决此问题

3 个答案:

答案 0 :(得分:0)

Heroku 需要使用邮件程序加载项。没有它,我已经多次这样做了,但是,如果你想要更强大的配置,能够拥有ISP信任的真正白名单IP等,建议使用邮件。

以下是我在Heroku上制作config/initializers/setup_mail.rb的示例:

ActionMailer::Base.smtp_settings = {
    :address              => "smtp.gmail.com",
    :port                 => 587,
    :domain               => "example.com",
    :user_name            => "donotreply@example.com",
    :password             => ENV["EMAIL_PASSWORD"],
    :authentication       => "plain",
    :enable_starttls_auto => true 
}

ActionMailer::Base.default_url_options = { host: 'example.com', protocol: 'http' }

我认为您的问题是使用“www.gmail.com”作为domain中的smtp_settings ...我还会移除openssl_verify_mode行。

有关详细信息,请参阅此Tom Slykhouse's blog post。这是我从上面获得上述配置的地方,它对我来说效果超过一年。

答案 1 :(得分:0)

您的错误来自您路径中的favicon.ico文件似乎缺失 试过http://proproots.herokuapp.com/favicon.ico 从布局文件中删除链接或将favicon.ico添加到公共目录。

希望有帮助...

答案 2 :(得分:-1)

在Heroku上,你需要使用邮件插件(我喜欢邮戳)。

您将找到完整的列表,以及如何在此处实施它们的说明:

https://addons.heroku.com/#email-sms