在Heroku上设置Devise和Sendgrid

25

我的网站托管在Heroku上,我安装了Sendgrid Add-On,因为它看起来几乎是完美的——但到目前为止,邮件功能都没有工作。我已经阅读了文档,它明确表示只需要添加附加组件,是否需要更多配置才能让Devise正常工作?

当我选择“发送新密码”时,我得到一个404页面,这让我觉得还有其他问题。比如说,Sendgrid如何知道/在哪里使用预安装的Devise模板?

谢谢。


404错误是Devise路由中的错误。使用rake routes | grep devise验证您的路由。Devise使用您的ActionMailer。 - Chloe
2个回答

52

今天早上我刚刚设置了Devise和SendGrid,没有遇到任何问题。我将重复我所采取的步骤。

首先,安装Devise和SendGrid。恭喜你,你已经完成了;)

接下来,在生产环境中,将以下内容添加到您的文件中:

config/initializers/devise.rb

config.mailer_sender = "mail-to-send@from.com"

配置Rails的ActionMailer以使用SendGrid

config/environments/production.rb
config.action_mailer.default_url_options = { :host => 'your.websitedomain.com' }
ActionMailer::Base.smtp_settings = {
  :user_name            => ENV['SENDGRID_USERNAME'],
  :password             => ENV['SENDGRID_PASSWORD'],
  :address              => "smtp.sendgrid.net",
  :port                 => 587,
  :enable_starttls_auto => true,
  :authentication       => :plain,
  :domain               => "yourdomain.com"
}

现在一切都运作良好。注册确认、密码找回等功能也正常工作。

此外,您应该使用Logging Expanded(免费!),并使用heroku logs --tail查看实时日志。
如果您仍然遇到错误,请发布您的日志。

祝您愉快!


1
你的解决方案完美地运行了。Heroku上的说明没有包括代码config.mailer_sender = "mail-to-send@from.com"。谢谢。 - ubique
到目前为止,只有密码重置电子邮件可以正常工作。我需要改变什么才能让“新用户”也能正常工作吗? - ubique
不,对我来说一切都正常。密码重置、订阅等等...请检查您的Heroku日志以获取错误信息。 - Lucas
你提到的订阅电子邮件是使用 :confirmable 方法吗?因此,当新用户注册时,他们必须点击邮件中的链接才能登录? - ubique
@ubique 是的,没错。很奇怪你可以发送密码恢复邮件但不能发送确认邮件。 - Lucas
发送网格(SendGrid)的密码和我的Heroku账户密码一样吗?如果不是,我可以在这里设置吗?https://sendgrid.com/user/account - Ricbermo

1

我已经使用了sendgrid Add-On,它应该是一键安装的。就像你说的那样,甚至文档也这么说:

使用ActionMailer的Rails应用程序只需安装Add-On后无需进行任何设置即可正常工作。

所以,这让我想到可能出现了其他问题。你是否尝试过使用heroku logs命令查看应用程序是否记录了任何错误?


请注意,我们的Bamboo堆栈上安装了一个自动配置ActionMailer的插件,这对于Cedar或在Bamboo上使用ActionMailer的非Rails应用程序来说,以下设置是必要的。 - Mike Atlas
请注意,当我两年前回答这个问题时,Bamboo仍然是默认的堆栈。 - markquezada
2
没问题,只是想让这个保持相关和最新 :) - Mike Atlas

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接