如果存在重复的标头,电子邮件通知将失败

(免责声明:不是 Ruby 程序员)

我认为这是 Discourse 使用的邮件库中特别糟糕的行为。这是 header_value 函数:

据我所知,@message.header[name] 调用的是此方法:

https://www.rubydoc.info/github/mikel/mail/Mail%2FHeader:[]

根据 RFC,许多字段可以出现多次,如果只有一个标头,我们将返回一个字符串值,或者如果存在多个匹配的标头,将返回一个按其在标头中出现的顺序排列的值数组,从上到下排序。

Discourse 自动设置“Precedence”标头,因此由于您还通过 email_custom_headers 设置添加了一个,现在有 两个“Precedence”标头,而 @message.header["Precedence"] 返回的是一个数组而不是一个字符串。

我认为,只要 email_custom_headers 包含消息对象上已有的标头,就会触发此错误。

5 个赞