此代码在开发中完美运行,并且电子邮件永远不会到达生产环境,即使它们具有相同的配置。
配置:
config.action_mailer.raise_delivery_errors = true
config.action_mailer.default_url_options = { :host => 'domain.com' }
config.action_mailer.delivery_method = :smtp
config.action_mailer.perform_deliveries = true
config.action_mailer.smtp_settings = {
:address => "smtp.gmail.com",
:port => 587,
:authentication => :plain,
:user_name => 'my_server@gmail.com',
:password => 'secret',
:enable_starttls_auto => true
}
发送电子邮件:
logger.warn "before mail call"
logger.warn ActionMailer::Base.smtp_settings
logger.warn(mail(to: "my_email@gmail.com", subject: "Testing", body: "email body").deliver!)
服务器日志:
[2013-08-29 16:41:11.000] [WARN] -- before mail call
[2013-08-29 16:41:11.000] [WARN] -- {:address=>"smtp.gmail.com", :port=>587, :authentication=>:plain, :user_name=>"my_server@gmail.com", :password=>"secret", :enable_starttls_auto=>true}
[2013-08-29 16:41:11.000] [WARN] -- Date: Thu, 29 Aug 2013 16:41:11 +0200
From: my_server@gmail.com
To: my_email@gmail.com
Message-ID: <521f5d87537af_7af3da480050052@castillo05.fzi.de.mail>
Subject: Testing
Mime-Version: 1.0
Content-Type: text/plain;
charset=UTF-8
Content-Transfer-Encoding: 7bit
email body
在我的本地主机上的开发中,它运行良好。电子邮件几乎立即到达。在生产过程中,电子邮件永远不会到达,我也没有收到任何错误。我已经尝试了很多设置组合(有/没有:enable_starttls_auto、:domain、不设置delivery_method、perform_deliveries等),到目前为止没有任何效果。我也尝试发送到其他电子邮件但没有成功。
有任何想法吗?提前谢谢了