Wenn ich die /admin/email-logs/rejected meiner selbst gehosteten Seite überprüfe, stelle ich fest, dass abgelehnte E-Mails ihren Textkörper wie folgt haben:
Der korrekte E-Mail-Textkörper beginnt mit 谢谢 in UTF-8 (der vollständige Textkörper ist viel länger), und der beschädigte Text ist m6Mtyx7x7j+rjuVupyY= in Base64.
Die E-Mails in der Datenbank befinden sich bereits in diesem beschädigten Zustand. Wenn ich diese mit der vom Mailserver verglichen habe, stelle ich fest, dass die E-Mail umgeschrieben wurde, und ich vermute, dass das E-Mail-Cleaner-Modul die E-Mail durcheinander gebracht hat. (Aber ich habe nicht genug Ruby-Kenntnisse, um dessen einzigartige String-Kodierungsfunktion zu verstehen.)
Nein. Sie stammen von Tencent und Netease. Die ursprüngliche E-Mail (ich habe sie auf dem Mailserver aufbewahrt, um dieses Problem zu untersuchen) hat weder mit mutt noch mit Rubys Mail-Bibliothek Probleme.
Ich habe es verstanden. Das part eines Mail hat die korrekten charset-Informationen, aber irgendwie erhält sein body diese nicht und behandelt die Bytes als ASCII-8BIT.
sed -i 's/part.body.decoded/part.body.decoded.force_encoding(part.charset || "utf-8")/' /var/www/discourse/lib/email/cleaner.rb
[quote=“lilydjwg, post:1, topic:392868”]Die E-Mails in der Datenbank sind bereits in diesem beschädigten Zustand.
[/quote]
Ich habe dieses Problem kürzlich mit Folgendem behoben:
[quote=“lilydjwg, post:5, topic:392868”]Der part einer Mail hat die korrekten charset-Informationen, aber irgendwie erhält der body diese nicht und behandelt die Bytes als ASCII-8BIT.
[/quote]
Könnten Sie mir diese E-Mail (vorausgesetzt, es ist eine, die nicht von Discourse beschädigt wurde) zukommen lassen, damit wir dies weiter untersuchen und sie möglicherweise als Testfall verwenden können?