【问题标题】:Rails on Heroku Sending Duplicate EmailHeroku 上的 Rails 发送重复的电子邮件
【发布时间】:2015-02-16 02:47:48
【问题描述】:

客户的网站在 Rails 3 中构建并托管在 Heroku 上,并接受通过 Rails 邮件发送的表单提交。他们正在接收重复的电子邮件。我无法在我的开发环境中复制该问题。

邮件通过使用标准 Rails 邮件程序注册到其域的 gmail 帐户发送:

ActionMailer::Base.smtp_settings = {
  :address              => "smtp.gmail.com",
  :port                 => 587,
  :domain               => "clientdomain.com",
  :user_name            => "noreply@clientdomain.com",
  :password             => "password",
  :authentication       => "plain",
  :enable_starttls_auto => true
}

(gather data)
mail(:to => "staff@clientdomain.com", :subject => "Form Submittal", :from => @email)

副本不一定会立即发送,因为它们的交付时间会比原始副本晚 1 分钟到 3 小时不等。

在某些情况下,HTML 字符会替换为实体。

这是一个例子:

From: noreply@clientdomain.com
> Subject: Form Submittal
> Date: December 14, 2012 10:38:18 PM EST
> To: staff@clientdomain.com
>=20
> Form Submittal
>=20
> Name: Potential Lead
>=20
> Phone: 1234567890
>=20
> Email: some.user@gmail.com 
>=20
> Message: Hi my names Some I'm from tennesse and I'd really like to =
> get info on your service thank you for all your help!!!
>=20

并重复:

> From: noreply@clientdomain.com
> Subject: Form Submittal
> Date: December 15, 2012 1:46:54 AM EST
> To: staff@clientdomain.com
>=20
> Form Submittal
>=20
> Name: Potential Lead
>=20
> Phone: 1234567890
>=20
> Email: some.user@gmail.com
>=20
> Message: Hi my names Some I%27m from tennesse and I%27d really like =
> to get info on your service thank you for all your help%21%21%21
>=20

我很想认为表单只是提交了两次,但是不太可能在 3 小时后提交完全相同的输入,再加上大量的骗子(有时报告 60-75%,但从来没有 100%)让我对此高度怀疑。

我还发现了一个关于重复问题的要点,它指示我用这个覆盖默认设置:

config.action_mailer.sendmail_settings = {
  :arguments => '-i'
}

...没有任何有益的结果。

我的问题,如果不是很明显:如何阻止 rails 发送重复的电子邮件?

【问题讨论】:

  • 您对此有任何解决方案吗?我好像也有类似的问题。
  • 我没有。它仍然非常频繁地发送重复的电子邮件,没有押韵或理由。
  • 嗯,我也有同样的问题 :(

标签: ruby-on-rails email duplicates mailer


【解决方案1】:

对于从 google 获得相同问题的任何人,以下是解决方案: 不要使用.deliver,如果您使用延迟作业来安排邮件,如最初在此处https://stackoverflow.com/a/13000167/1870446 和此处https://github.com/collectiveidea/delayed_job#rails-3-mailers 所述

因此,您应该使用UserMailer.delay.some_mail 而不是UserMailer.delay.some_mail.deliver。干杯!

【讨论】:

    猜你喜欢
    • 2012-04-21
    • 2014-01-28
    • 2019-08-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-24
    • 2019-04-16
    • 1970-01-01
    相关资源
    最近更新 更多