拒否されたメールが読めない

自己ホスト型サイトの /admin/email-logs/rejected を確認すると、拒否されたメールの本文は次のようになっています。

正しいメール本文は UTF-8 で 谢谢 から始まります(全文はもっと長いです)。破損したテキストは base64 で m6Mtyx7x7j+rjuVupyY= です。

データベース内のメールはすでにこの破損した状態です。これをメールサーバーからのものと比較すると、メールが書き換えられており、メールクリーナーモジュールがメールを混乱させたのではないかと疑っています。(しかし、その独自の文字列エンコーディング機能を理解するほどのRubyの知識がありません。)

これらのメッセージはExchangeサーバーから来ている可能性はありますか?:

「いいね!」 2

いいえ、TencentとNetEaseからです。元のメール(この問題を調査するためにメールサーバーに保持しています)は、muttでもRubyのMailライブラリでも問題ありません。

最近、Exchangeサーバーからリジェクトメールを受け取りましたが、それとは対照的に、この問題はありませんでした。

理解しました。Mailpartには正しいcharset情報がありますが、何らかの理由でそのbodyがそれを受け取らず、バイトをASCII-8BITとして扱っています。

sed -i 's/part.body.decoded/part.body.decoded.force_encoding(part.charset || "utf-8")/' /var/www/discourse/lib/email/cleaner.rb
「いいね!」 1

私は最近、以下の方法でこの問題を修正しました。

これは(Discourseによって破損されなかったと仮定して)あなたが私に渡すことができるメールですか?そうすれば、さらに調査し、テストケースとして使用できる可能性があります。

「いいね!」 1

問題を再現するはずの、機密情報を含まない、簡略化されたメールを作成しました(irbで確認済み)。

issuemail.txt (857 バイト)

「いいね!」 1

お話しされているメール(およびこの例)は、私がリンクした変更を適用した後も、まだ問題が発生していますか?

いいえ、修正されました。ありがとうございます。

「いいね!」 2