自定义电子邮件标头仅在控制台重新加载后出现

时间:2017-09-12 11:37:17

标签: ruby-on-rails ruby rubygems actionmailer

我一直在尝试在我们的宝石的帮助下在我们所有项目中设置全局电子邮件标题。目前,该gem用于在我们的所有电子邮件中添加BCC电子邮件等。我将标题的代码添加到添加BCC电子邮件地址的方法中。

在我们所有的项目中都正确添加了BCC地址,所以我知道这行代码肯定是在启动时运行的。

这是相关宝石的代码。

  ActionMailer::Base.default "FOO" => 'BAR'
  bcc = message.bcc.to_a
  bcc << BCC_ADDRESS
  message.bcc bcc

我们的想法是,这个标题会出现在我们所有的电子邮件中。

现在出现了有趣的部分以及我为创建我遇到的问题所采取的步骤。

  1. 将项目与新的gem版本捆绑在一起
  2. 启动rails控制台
  3. 发送随机电子邮件
  4. 对标题未出现在电子邮件中感到失望。但是,正确显示BCC地址。
  5. 运行reload!
  6. 再次发送电子邮件
  7. 对标题突然出现的原因感到困惑
  8. 我在rails 3.2.22.5(ruby 2.2.4)和rails 4.2.9中尝试了这个。 (红宝石2.4.1) 运行规范时不包括标题,但是那里存在BCC地址。

    有谁知道可能导致这些奇怪症状的原因是什么?

1 个答案:

答案 0 :(得分:0)

好的,所以问题与默认情况下的电子邮件兑现有关。 因此,重新发送电子邮件时不会重新检查默认值。

为了解决这个问题,我通过执行以下操作改变了gem处理的方式,以便在我要发送的每封邮件之间进行操作。

  1. 拦截对deliver_message的调用
  2. mail.header[:'FOO'] = 'BAR'