自定义电子邮件标题仅在控制台重新加载后才存在

问题描述:

我一直试图在我们的宝石的帮助下,在所有项目中设置全局电子邮件标头。目前,该宝石用于向我们的所有电子邮件中添加BCC电子邮件等等。我将标题的代码添加到添加BCC电子邮件地址的方法中。自定义电子邮件标题仅在控制台重新加载后才存在

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

这是相关宝石的代码。

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

想法是,这个头文件存在于我们所有的电子邮件中。

现在到了有趣的部分,我已经采取措施来创造,我有这个问题的步骤。

  1. 与新宝石版本
  2. 捆绑项目
  3. 启动了轨道控制台
  4. 发送任何随机电子邮件
  5. 感到失望的是,头不显示在电子邮件。但是,BCC地址已正确显示。
  6. 运行reload!
  7. 发送电子邮件再次
  8. 被困惑,为什么头突然出现

我在轨尝试这种3.2.22.5(红宝石2.2.4)和轨道4.2.9 。 (ruby 2.4.1) 运行规范时不包括头文件,但BCC地址存在。

没有人有任何想法可能会导致这些奇怪的症状是什么?

好吧,所以这个问题与正在兑现对电子邮件默认做。 因此,重新发送电子邮件时,默认值不会被重新检查。

若要解决此我改变了宝石句柄,我想通过执行以下操作来发送每封邮件之间的行为方式。

  1. 截距呼吁deliver_message
  2. mail.header[:'FOO'] = 'BAR'