Notificações por e-mail falham se houver cabeçalhos duplicados

(Aviso: não sou programador Ruby)

Acho que este é um comportamento particularmente desagradável na biblioteca de e-mail que o Discourse está usando. Aqui está a função header_value:

Pelo que entendi, @message.header[name] está chamando este método:

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

Conforme a RFC, muitos campos podem aparecer mais de uma vez, retornaremos uma string do valor se houver apenas um cabeçalho, ou se houver mais de um cabeçalho correspondente, retornaremos um array de valores na ordem em que aparecem no cabeçalho, ordenados de cima para baixo.

O Discourse define automaticamente um cabeçalho Precedence, então, como você também está adicionando um através da configuração email_custom_headers, agora existem dois cabeçalhos Precedence, e @message.header[\"Precedence\"] está retornando um array em vez de uma string.

Acho que este bug será acionado sempre que email_custom_headers contiver um cabeçalho que já existe no objeto de mensagem.

5 curtidas