使用外部SMTP在Heroku发送电子邮件(Sending emails on Heroku usi

2019-07-30 17:22发布

我想从我的Rails在Heroku上的应用程序发送电子邮件。 作为Heroku的不支持SMTP,我使用外部SMTP服务器。

配置/环境/ 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的日志 - 尾”显示“已发送邮件...”。 实际上,电子邮件未送达。

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

谢谢。

山姆香港

Answer 1:

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


Answer 2:

你的配置是正确的。 但是,你必须把它在正确的环境文件。 在Heroku的部署的情况下,它应该是“生产”。 控制台的作品,因为它使用“发展”作为环境。 所以把在配置/环境/ 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' 
}

希望能解决你的问题。



Answer 3:

如果它显示为邮件的发送,我会认为这是在您的邮件服务器可能阻止继电器从Heroku的IP范围内的配置问题 - 这是最奇怪的,虽然如果它致力于通过Heroku的控制台,而不是通过您的应用程序。

你有没有想过尝试SendGrid Heroku的插件只是为了缓解用自己的邮件服务器上的任何问题?



文章来源: Sending emails on Heroku using external SMTP