自己ホスト型サイトの /admin/email-logs/rejected を確認すると、拒否されたメールの本文は次のようになっています。
正しいメール本文は UTF-8 で 谢谢 から始まります(全文はもっと長いです)。破損したテキストは base64 で m6Mtyx7x7j+rjuVupyY= です。
データベース内のメールはすでにこの破損した状態です。これをメールサーバーからのものと比較すると、メールが書き換えられており、メールクリーナーモジュールがメールを混乱させたのではないかと疑っています。(しかし、その独自の文字列エンコーディング機能を理解するほどのRubyの知識がありません。)
ToddZ
2
これらのメッセージはExchangeサーバーから来ている可能性はありますか?:
「いいね!」 2
いいえ、TencentとNetEaseからです。元のメール(この問題を調査するためにメールサーバーに保持しています)は、muttでもRubyのMailライブラリでも問題ありません。
最近、Exchangeサーバーからリジェクトメールを受け取りましたが、それとは対照的に、この問題はありませんでした。
理解しました。Mailのpartには正しい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
お話しされているメール(およびこの例)は、私がリンクした変更を適用した後も、まだ問題が発生していますか?