设计不发送恢复密码电子邮件

时间:2017-10-28 09:02:54

标签: ruby-on-rails ruby email devise

邮件配置是通过smtp。

  • 在开发模式下,localhost的一切正常工作,设计使用smtp conf在development.rb中发送恢复密码电子邮件
  • 使用动作邮件发送手动邮件也没问题

在生产模式下,

仅修改主机以匹配生产机器中的主机

smtp conf没有改变,在rails控制台中手动发送邮件是可以的

但设计不发送恢复密码邮件

如何调试?

是Devise真正接受了生产中的全球邮件conf .rb? 没有Devise :: Mailer覆盖。 这在初始化器中没有注释

1 个答案:

答案 0 :(得分:0)

请分享您项目的github页面,以便我们查看。然后还共享生产服务器的日志。您可以使用heroku logs恢复它。我确实为我的应用程序配置了这个,最终它崩溃了。这有点棘手。我确实遵循了一些指南。如果您使用相同的引用,则遵循指南。我遵循本指南,我记得我必须允许在我的Gmail帐户中设置我的应用程序中gmail帐户的使用情况。然后,您需要在production.rb中进行一些设置,我引用guide,转到该链接查看完整指南并在线查看其他指南:

  

设置生产环境

     

现在您需要编辑文件“config / environments / production.rb”。我们将在此文件中添加非常相似的内容。首先,您可以添加:

config.action_mailer.default_url_options = { :host => 'yoursite.herokuapp.com' }
  

注意:您可能还需要添加此行。当我设置邮件时,我没有在任何其他教程中找到这一行。我有开发邮件工作,但我无法让heroku工作。我在heroku日志中收到了这个错误:

ActionView::Template::Error: Missing host to link to! Please provide the :host parameter, set default_url_options[:host], or set :only_path to true
  

我在这里找到了答案:ActionView :: Template :: Error:缺少链接到stackoverflow的主机。如果您遇到此问题,请添加:

Rails.application.routes.default_url_options[:host] = 'yoursite.herokuapp.com'
  

到你的production.rb文件。

     

接下来,您必须添加这些行。再次确保您保留变量原样。

config.action_mailer.delivery_method = :smtp
config.action_mailer.perform_deliveries = true
config.action_mailer.raise_delivery_errors = false
config.action_mailer.default :charset => "utf-8"

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

阅读本文中的评论和所有其他相关指南以进行配置,您可能需要使用一些smtp api来发送电子邮件....