邮件配置是通过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"]
}
阅读这篇文章的评论和所有其他相关指南来配置它,您可能需要使用一些smtp
api来发送电子邮件。。。。