Devise邮件程序不在生产环境中发送邮件

时间:2018-11-29 19:39:10

标签: ruby-on-rails devise

我已经在公司内部网络上设置了Rails应用程序。我使用Devise::Mailer进行注册确认,密码恢复等。我也有自己的邮件程序类,该类来自ActionMailer::Base。在开发环境中,两种类型的邮件程序都可以正常工作,但是在生产环境中,只有我的自定义邮件程序似乎可以工作。

我在两种环境下的邮件配置都相同:

  config.action_mailer.raise_delivery_errors = true
  config.action_mailer.default_url_options = { host: 'my.internal.ip.address', port: 80 }
  config.action_mailer.asset_host = "http://my.internal.ip.address"

  config.action_mailer.delivery_method = :smtp
  config.action_mailer.perform_deliveries = true
  config.action_mailer.smtp_settings = {
    :address              => 'internal.mail.server',
    :port                 => 25,
    :domain               => 'domain.name'
  }

此SMTP服务器不需要身份验证。

config/initializers/devise.rb中,我这样设置发件人地址:

  config.mailer_sender = "myaddress@domain.name"

我尝试在生产环境中将config.action_mailer.delivery_method设置为:file。在这种情况下,从我的自定义邮件发送的邮件将被写入文件,但从Devise邮件发送的邮件则不会写入文件。

如何使Devise邮件程序在生产环境中工作?

更新

我已将config/environments/production.rb文件复制到config/environments/development.rb,它仍然可以在开发模式下工作,但不能在生产模式下工作。

1 个答案:

答案 0 :(得分:-1)

您在开发模式下设置的所有配置都将在生产模式下工作,您需要重新配置默认的邮件程序URL-我无法想象my.internal.ip.address在生产中是有效的host。您应该将其更改为托管应用程序代码的域名或IP。