【问题标题】:rails 3 actionmailer works in development, but not on herokurails 3 actionmailer 在开发中工作,但不在 heroku 上
【发布时间】:2012-08-23 14:15:26
【问题描述】:

我有一个用于 actionmailer 的外部 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
}

有什么想法吗?

【问题讨论】:

  • 在这个服务器上,没有。在另一个有同样问题的人中,是的。我相信这实际上是一个godaddy smtp服务器。
  • 您是否尝试将身份验证方法更改为普通?
  • 这真的很奇怪......对不起,但我对此没有任何其他想法......
  • 您的邮件代码是什么样的? heroku logs 还说了什么?有什么错误吗?
  • 这只是标准的设计邮件代码。我所改变的只是我记得的配置。日志中有0个错误,它实际上说它正在发送电子邮件。

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


【解决方案1】:

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

尝试删除

 :enable_starttls_auto => true

来自您的 smtp 配置块

【讨论】:

  • 我查看了该页面并尝试了它的建议和您的建议,但仍然遇到同样的问题:-/ 无论如何谢谢!
【解决方案2】:

如果您使用 deyaled_jobs 发送电子邮件,您可能需要将工作人员测功机添加到您的应用程序中。即使您不是,也值得一试,看看它是否能解决您的问题。

【讨论】:

    【解决方案3】:

    我使用 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' 发送它,并将发件人地址嵌入到电子邮件的正文。这不是一个完美的解决方案,这些是从我的网络用户发送给我的员工的电子邮件。很多时候员工不会注意到发件人地址,只需点击回复,他们就会给我发电子邮件,网站管理员。

    【讨论】:

    • 这些是确认电子邮件,因此发件人始终来自托管域而不是 gmail。我试过用它发送到 gmail 和工作电子邮件地址。
    【解决方案4】:

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

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

    【讨论】:

    • 连接被 587 拒绝... 暂时不建议 sendgrid 工作... 但如果我不能让这个工作在未来可能会发生
    • 因为您没有收到任何错误:您是否测试过将电子邮件发送到不以 ...@gmail.com 结尾的另一个电子邮件地址?
    • 其实我有。我发送了一封到我的个人 gmail 帐户和一封到我的工作电子邮件帐户^^;
    • 我刚刚查看了我使用 sendgrid 的一些工作配置,发现我使用了:domain => 'heroku.com'。在 Rails API Docs 中它只是说:domain - If you need to specify a HELO domain, you can do it here.。尝试 'heroku.com' 或 'herokuapp.com' 可能是值得的,尽管这只是猜测,谷歌搜索 HELO domain 建议类似“您使用的域必须具有有效的 A 和 MX 记录作为接收者接受它”,因此无论您的实际域是什么,“heroku.com”都可以正常工作。 sendgrid 文档正在使用“heroku.com”。
    • :domain 配置选项似乎首先是可选的,因此您甚至可以尝试不提供它。
    猜你喜欢
    • 1970-01-01
    • 2011-08-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多