メール通知で添付ファイルが誤って multipart/alternative に割り当てられる問題

添付ファイル付きでメール通知を送信すると、生成されるマルチパート MIME 構造が不正になります。添付ファイルが「mixed」パートではなく「alternative」パートとして含まれています。その結果、Thunderbird などの一部のメールクライアントでは、これらがテキスト対 HTML のようなメール本文の単なる代替形式として解釈されるため、添付ファイルが表示されません。

[以下の引用は、同じく Mail モジュールに依存する Mailer に対する本質的に同一のバグレポート から抜粋したものです。]

期待されるメールの構造:

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 添付ファイルのみをファイルとして表示します。どうやら、このメールクライアントは最終エントリのみをレンダリングするようです。

Discourse が依存している Mail モジュール には、いくつかの関連する可能性のあるバグレポートが存在します。これらのレポートの一部は、特定の順序でパーツを渡すことで問題が解決するという明示されていない含みをもってクローズされています。ここでそれが当てはまるかどうかはわかりませんが、上記で引用しリンクしたレポートから、それらのレポートのいくつかへのリンクが提供されています。

「いいね!」 9

ご報告と問題の明確なご説明をありがとうございます!

FIX: Notification emails with attachments are incorrectly structured · discourse/discourse@59578df · GitHub のコミット以降、この問題は修正されています。

「いいね!」 7

このトピックは 4 日後に自動的に閉鎖されました。新しい返信は受け付けられません。