我正在开发Cloud9上的Rails应用程序,我正在尝试做一些非常简单的事情,即让Devise确认电子邮件正常工作。由于某种原因,它们没有被发送。
我正在使用SendGrid来实现电子邮件功能。我知道SendGrid工作正常,因为我可以制作一个发送测试邮件的简单ActionMailer。但由于某种原因,未发送Devise确认电子邮件。我可以看到它正在调用ActionMailer::Base.mail
方法,但邮件永远不会被传递。
我不知道如何调试它。
只是为了阻止建议检查已经有效的内容:
:confirmable
config.action_mailer.perform_deliveries = true
config/initializers/setup_mail.rb
代码:
if Rails.env.development? || Rails.env.production?
ActionMailer::Base.delivery_method = :smtp
ActionMailer::Base.smtp_settings = {
address: 'smtp.sendgrid.net',
port: '2525',
authentication: :plain,
user_name: ENV['SENDGRID_USERNAME'],
password: ENV['SENDGRID_PASSWORD'],
domain: "sendgrid.com",
enable_starttls_auto: true
}
答案 0 :(得分:0)
我猜我的解决方案不是预期的解决方案,但它有效(虽然我不确定原因)。
在文件config/initializers/setup_mail.rb
中,我添加了以下两行:
ActionMailer::Base.layout 'mailer'
ActionMailer::Base.default from: "from@example.com"
这些可能是应该在Devise的某些配置文件中指定的内容,但我没有看到任何相关的说明。
[编辑]只有第2行很重要。 “来自”地址是虚假的电子邮件地址并不重要,但如果丢失,则电子邮件无法发送。