我已经在公司内部网络上设置了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
,它仍然可以在开发模式下工作,但不能在生产模式下工作。
答案 0 :(得分:-1)
您在开发模式下设置的所有配置都将在生产模式下工作,您需要重新配置默认的邮件程序URL-我无法想象my.internal.ip.address
在生产中是有效的host
。您应该将其更改为托管应用程序代码的域名或IP。