使用外部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插件来减轻你自己的邮件服务器的任何问题?
- RMagick + Rails + Heroku?
- 我应该在Heroku上部署我的Ruby on Rails应用程序
- 为什么dropdown-toggle(bootstrap)在heroku上不起作用?
- Heroku app坚持使用HTTPS – 为什么?
- 通过SSL发布UTF-8时,HEROKU上的“EOFError:文件结束”
- NameError:未初始化的常量Mail :: Parsers :: ContentTransferEncodingParser
- 文件从亚马逊服务器读取,ruby在轨道上,没有匹配路由
- Heroku Rails应用程序级别不记录
- Ruby on Rails资产没有在Heroku上进行预编译