إرسال الرد عبر البريد الإلكتروني من Outlook يزيل كل ما يلي القائمة المرقمة

استضافة ذاتية، الإصدار 2026.1.5 (التغيير 2727e4d). ندير مجتمعنا بنمطة قائمة بريدية ونعالج الردود عبر البريد الإلكتروني.

أجاب أحد الأعضاء من خلال Outlook برسالة طويلة إلى حد ما، والنسخة التي ظهرت على الموقع — وأُرسلت مرة أخرى إلى القائمة — كانت مقطوعة في منتصفها. لقد اختفى كل شيء بدءاً من القائمة المرقمة الأولى. لم يظهر أي خطأ، ولا شيء في السجلات، وانتهت الرسالة فجأة في منتصف جملة.

ما لفت انتباهي في البداية: قوائم النقاط (bullet lists) في الجزء السابق من نفس البريد الإلكتروني وصلت بشكل سليم. فقط القائمة المرقمة هي التي تم قطعها، بالإضافة إلى كل ما جاء بعدها.

المسؤول عن ذلك هو extract_from_word في الملف lib/email/receiver.rb. فيما يتعلق ببريد Outlook/Word، يعامل العنصر الأول من نوع .WordSection1 الذي ليس <p> أو <ul> كبداية توقيع أو رسالة مرفقة، ويقوم بإزالته مع كل العناصر التالية له:

elided =
doc.css(
“.WordSection1 > :not(p):not(ul):first-of-type, .WordSection1 > :not(p):not(ul):first-of-type ~ *”,
).remove

يقوم Outlook بتصيير القوائم المرقمة كـ <ol>، ولا يستثني المحدد (selector) عنصر <ol>. لذا، تكون القائمة المرقمة هي أول عنصر “ليس <p> وليس <ul>”، ويقوم المستقبل بقطع الرسالة هناك بالضبط. يتم استبعاد قوائم النقاط (<ul>)، وهو السبب في بقائها وعدم بقاء القائمة المرقمة.

طريقة إعادة إنتاج المشكلة

  1. من Outlook (نسخة سطح المكتب)، أجب على إشعار. اكتب فقرة، ثم قائمة مرقمة، ثم فقرة أخرى.
  2. تحتفظ المنشأة المنشأة بالنص حتى القائمة المرقمة وتُحذف القائمة وكل ما يأتي بعدها.

جسم HTML الأدنى الذي يحفز المشكلة (سهل الإدراج في اختبار المستقبل receiver spec):

فقرة تمهيدية.

الخطوات:

  1. الأول
  2. الثاني

هذه الفقرة الخلفية تختفي أيضاً.

ستحصل فقط على فقرتي التمهيد.

لا تزال المشكلة موجودة في الفرع الرئيسي — لم يتغير المحدد. بحثت في فئة الأخطاء أولاً ولم أجد هذه المشكلة مُبلَّغاً عنها مسبقاً.

الحل المقترح

عامل <ol> بنفس طريقة <ul>، لأن القائمة المرقمة هي محتوى وليس توقيعاً:

“.WordSection1 > :not(p):not(ul):not(ol):first-of-type, .WordSection1 > :not(p):not(ul):not(ol):first-of-type ~ *”

هذا يحافظ على القائمة ولا يزال يحذف علامات التوقيع/التحويل الحقيقية (الجداول، divs، hr، الصور). يسعدني فتح طلب سحب (PR) مع رسالة بريد إلكتروني ثابتة واختبار يفشل إذا كان ذلك مفيداً.

هممم، هل يمكنك محاولة تحديث موقعك أولاً؟ بما أن نسختك ليست الأحدث، فقد يكون هذا الخطأ قد تم إصلاحه في التحديثات اللاحقة.

هممم. حالة Discourse في لوحة الإدارة لدي تشير إلى أنني محدّث وأستخدم أحدث إصدار. غريب حقًا.