【问题标题】:Custom email header is only present after a console reload自定义电子邮件标题仅在控制台重新加载后出现
【发布时间】:2018-02-20 20:35:58
【问题描述】:

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

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

这是相关 gem 的代码。

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

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

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

  1. 将项目与新的 gem 版本捆绑在一起
  2. 启动 Rails 控制台
  3. 随机发送电子邮件
  4. 对于邮件中没有出现标题感到失望。但是,密件抄送地址会正确显示。
  5. 运行reload!
  6. 再次发送电子邮件
  7. 对为什么标题突然出现感到困惑

我在 rails 3.2.22.5 (ruby 2.2.4) 和 rails 4.2.9 中试过这个。 (红宝石 2.4.1) 运行规范时不包含标头,但是那里存在密件抄送地址。

有谁知道是什么导致了这些奇怪的症状?

【问题讨论】:

    标签: ruby-on-rails ruby rubygems actionmailer


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2011-03-06
      • 2018-01-07
      • 2016-07-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多