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



邮件配置是通过smtp进行的。

  • 在开发模式下,localhost一切正常,design在development.rb中使用smtp-conf发送恢复密码电子邮件
  • 手动发送带有动作邮件的邮件也可以

当处于生产模式时,

只有主机被修改为与生产机器中的主机匹配

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

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

如何调试?

Devise真的在production.rb中参加全球邮件会议吗?没有Devise::Mailer覆盖。这在初始值设定项中被取消注释

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

设置生产环境

现在,您需要编辑文件"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"]
}

阅读这篇文章的评论和所有其他相关指南来配置它,您可能需要使用一些smtpapi来发送电子邮件。。。。

最新更新