rails 3 actionmailer在开发中工作,但不在heroku上

时间:2012-08-29 02:06:47

标签: ruby-on-rails-3 heroku actionmailer dev-to-production

我有一个外部smtp服务器,我用于动作管理器。我在开发和生产配置中都有完全相同的action_mailer配置。它在开发中完美运行,但是当我在heroku上运行它时我没有出现任何错误,它说“发送邮件到me@gmail.com”然后测试帐户永远不会收到电子邮件(甚至检查垃圾邮件文件夹) )。

这大致是我的配置说的:

config.action_mailer.raise_delivery_errors = true
config.action_mailer.delivery_method = :smtp
config.action_mailer.perform_deliveries = true
config.action_mailer.smtp_settings = {
 :address => "mail.server.com",
 :port => 25,
 :domain => "server.com",
 :user_name => "no-reply@server.com",
 :password => "password",
 :authentication       => :login,
 :enable_starttls_auto => true
}

有什么想法吗?

4 个答案:

答案 0 :(得分:0)

查看https://devcenter.heroku.com/articles/smtp

尝试删除

 :enable_starttls_auto => true

从你的smtp配置块

答案 1 :(得分:0)

如果您使用deyaled_jobs发送电子邮件,则可能需要向应用程序添加工作人员dyno。即使你不是,也可能值得一试,看看它是否解决了你的问题。

答案 2 :(得分:0)

我使用godaddy进行smtp传递。首先,这是我的特定设置:

:address => 'smtpout.secureserver.net',
:port => 3535,
:domain => 'www.neeis.com',
:authentication => :plain,
:user_name => 'user@neeis.com',
:password => 'password'

但是!如果问题仅在电子邮件来自gmail.com时发生,那么godaddy阻止它,可能与垃圾邮件有关。所以这就是我如何解决这个问题,在我的邮件中我有这样的事情:

    begin
      EmployeeMailer.emailtoemp(@message).deliver
    rescue
      EmployeeMailer.emailtoempforce(@message).deliver
    end

因此,如果第一次尝试发送带有from ='somebody@gmail.com'的电子邮件失败,我会尝试使用from ='webmaster@mysite.com'发送它,并且我将地址嵌入到电子邮件的正文。这不是一个完美的解决方案,这些是从我的Web用户到我的员工生成的电子邮件。很多时候,员工不会注意到来自地址,只需点击回复,他们就会给我发电子邮件,网站管理员。

答案 3 :(得分:0)

首先尝试使用端口587而不是25。

如果这不起作用,快速修复将使用Heroku Sendgrid plugin。如果您每天发送少于200封电子邮件,则免费。