使用外部SMTP在Heroku上发送电子邮件

我想从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”显示“已发送邮件给…”。 实际上电子邮件没有发送。

有没有人对这个问题有任何想法?

谢谢。

山姆孔

你有没有在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' } 

您的配置是正确的。 但是你必须把它放在正确的环境文件中。 在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' } 

希望它能解决你的问题。

如果它显示为发送的邮件,我会建议你的邮件服务器上的配置问题可能阻止来自Heroku IP范围的中继 – 尽管它通过heroku控制台而不是通过你的应用程序工作,但这是最奇怪的。

你有没有想过尝试使用SendGrid Heroku插件来减轻你自己的邮件服务器的任何问题?