Уведомления по электронной почте неверно прикрепляют вложения к multipart/alternative

При отправке уведомлений по электронной почте с вложениями результирующая многосоставная структура MIME формируется некорректно. Вложения включаются как часть типа «alternative», а не как часть типа «mixed». В результате некоторые почтовые клиенты, такие как Thunderbird, не отображают эти вложения, поскольку интерпретируют их просто как альтернативный формат содержимого письма (как текст против HTML).

[Следующая цитата взята из по сути идентичного отчёта об ошибке для Mailer, который также использует модуль Mail.]

Как я ожидаю, должна быть структурирована электронная почта:

multipart/mixed
  multipart/alternative
    text/plain
    text/html
  application/pdf (т. е. в случае вложения PDF)

Что я получаю:

multipart/alternative
  text/plain
  text/html
  application/pdf (т. е. в случае вложения PDF)

Практический эффект:
Thunderbird отображает правильный текстовый корпус в зависимости от предпочтений пользователя (txt или html), но не показывает вложение как отдельный файл (хотя оно присутствует в исходном коде письма в виде блока, закодированного в base64). Почтовый клиент iOS показывает пустое тело письма и только вложение PDF как файл, поскольку оно является последним элементом, и, по-видимому, почтовый клиент отображает только его.

Существует несколько возможно связанных отчётов об ошибках в модуле Mail, на который опирается Discourse. Некоторые из этих отчётов закрыты с неявным намёком на то, что передача частей определённым образом решает проблему. Я не уверен, что это именно тот случай, но несколько таких отчётов связаны из отчёта, процитированного и упомянутого выше.

9 лайков

Спасибо за сообщение об этой проблеме и за чёткое её описание!

Это уже исправлено в FIX: Notification emails with attachments are incorrectly structured · discourse/discourse@59578df · GitHub.

7 лайков

Эта тема была автоматически закрыта через 4 дня. Новые ответы больше не принимаются.