2012-08-01 81 views
2

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

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日志 - 尾巴”显示“发送邮件...”。其实这封电子邮件没有发送。

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

谢谢。

山姆香港

回答

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' 
} 
+0

This Works!奇怪... Heroku不同地处理production.rb和environment.rb。非常感谢你。 – 2012-08-01 16:38:13

1

如果它显示为邮件的发送,我会认为这是在您的邮件服务器可能防止Heroku的IP范围继电器的配置问题 - 这是最奇怪但如果它的工作原理通过的Heroku控制台而不是通过你的应用程序

您是否想过尝试使用SendGrid Heroku插件来缓解与您自己的邮件服务器有关的任何问题?

+0

好的建议。我会用它来处理少量的电子邮件。 – 2012-08-01 16:38:44

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' 
} 

希望它解决了你的问题。