设计确认电子邮件未发送

时间:2017-05-01 00:20:44

标签: ruby-on-rails devise-confirmable cloud9

我正在开发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
}

1 个答案:

答案 0 :(得分:0)

我猜我的解决方案不是预期的解决方案,但它有效(虽然我不确定原因)。

在文件config/initializers/setup_mail.rb中,我添加了以下两行:

  1. ActionMailer::Base.layout 'mailer'
  2. ActionMailer::Base.default from: "from@example.com"
  3. 这些可能是应该在Devise的某些配置文件中指定的内容,但我没有看到任何相关的说明。

    [编辑]只有第2行很重要。 “来自”地址是虚假的电子邮件地址并不重要,但如果丢失,则电子邮件无法发送。