الرسائل المرفوضة غير قابلة للقراءة

عندما أتحقق من موقعي المستضاف ذاتيًا على المسار /admin/email-logs/rejected، أجد أن محتوى الرسائل المرفوضة يكون بهذا الشكل:

يبدأ نص الرسالة الصحيح بـ 谢谢 في ترميز UTF-8 (والنص الكامل أطول بكثير)، والنص التالف هو m6Mtyx7x7j+rjuVupyY= بتشفير Base64.

الرسائل في قاعدة البيانات بالفعل في هذه الحالة التالفة. عند مقارنتها بالرسالة الواردة من خادم البريد، أجد أنه قد تمت إعادة كتابة الرسالة، وأشتبه في أن وحدة تنظيف البريد الإلكتروني (email cleaner module) قد أفسدت الرسالة. (لكن ليس لدي معرفة كافية بلغة Ruby لفهم ميزة ترميز السلسلة الفريدة الخاصة بها.)

هل هناك أي فرصة لأن تكون هذه الرسائل قادمة من خادم Exchange..؟:

إعجابَين (2)

لا. إنها تأتي من Tencent و Netease. البريد الأصلي (احتفظت به على خادم البريد للتحقيق في هذه المشكلة) ليس به أي مشكلة مع مكتبة mutt أو مكتبة Mail الخاصة بـ Ruby.

لقد تلقيت مؤخرًا بريدًا إلكترونيًا مرفوضًا من خادم Exchange، وعلى النقيض من ذلك، لم تكن لديه هذه المشكلة.

لقد فهمت. يحتوي part الخاص بـ Mail على معلومات 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 Bytes)

إعجاب واحد (1)

هل لا يزال البريد الإلكتروني الذي تتحدث عنه (وهذا المثال) يظهر مشاكل بعد التحديث بما يتجاوز التغيير الذي أشرت إليه؟

لا، لقد تم إصلاحه. شكراً لك.

إعجابَين (2)