重複ヘッダーが存在する場合、メール通知が失敗します

(免責事項: Rubyプログラマーではありません)

Discourseが使用しているメールライブラリの非常に厄介な動作だと思います。以下はheader_value関数です。

私の理解では、@message.header[name]はこのメソッドを呼び出しています。

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

RFCによると、多くのフィールドは複数回出現する可能性があります。ヘッダーが1つしかない場合は文字列を返し、一致するヘッダーが複数ある場合は、ヘッダーの上から下への順序で値の配列を返します。

Discourseは「Precedence」ヘッダーを自動的に設定するため、email_custom_headers設定を通じて追加しているため、現在2つの「Precedence」ヘッダーがあり、@message.header["Precedence"]は文字列ではなく配列を返しています。

このバグは、email_custom_headersにメッセージオブジェクトに既に存在するヘッダーが含まれている場合にトリガーされると思います。

「いいね!」 5