我想从Heroku上的rails应用程序发送电子邮件。 由于Heroku不支持SMTP,我使用外部SMTP服务器。
config / environments / production.rb包含以下行。
ActionMailer::Base.delivery_method = :smtp
ActionMailer::Base.smtp_settings = {
:address => 'mydomain.com',
:port => 587,
:user_name => "myusername",
:password => "password",
:authentication => :plain,
:enable_starttls_auto => true,
:openssl_verify_mode => 'none'
}
当我从“heroku运行控制台”发送电子邮件时,它运行正常。但它不会从网站发送电子邮件。奇怪的是,“heroku logs --tail”显示“已发送邮件给...”。实际上电子邮件没有发送。
有没有人对这个问题有任何想法?
感谢。
Sam Kong
答案 0 :(得分:3)
您是否在config / enviornment.rb
中尝试过此操作ActionMailer::Base.smtp_settings = {
:address => 'mydomain.com',
:port => 587,
:user_name => "myusername",
:password => "password",
:authentication => :plain,
:enable_starttls_auto => true,
:openssl_verify_mode => 'none'
}
答案 1 :(得分:3)
您的配置正确无误。但是你必须把它放在正确的环境文件中。在Heroku部署的情况下,它应该是'生产'。控制台之所以有效,是因为它使用“开发”作为环境。所以将以下代码放在config / environment / production.rb
中ActionMailer::Base.delivery_method = :smtp
ActionMailer::Base.smtp_settings = {
:address => 'mydomain.com',
:port => 587,
:user_name => "myusername",
:password => "password",
:authentication => :plain,
:enable_starttls_auto => true,
:openssl_verify_mode => 'none'
}
希望它能解决你的问题。
答案 2 :(得分:1)
如果它显示为正在发送的邮件,我会建议您的邮件服务器上的配置问题可能阻止来自Heroku IP范围的中继 - 尽管它通过heroku控制台而不是通过您的应用程序工作,但这是最奇怪的。
你有没有想过尝试使用SendGrid Heroku插件来缓解你自己的邮件服务器的任何问题?