حل الأنماط النهائية في إشعارات البريد الإلكتروني

على الأقل، يعرض عميل البريد الإلكتروني posteo.de الألوان بالقيمة الأولى المعطاة في تعريف نمط CSS، مما ينتج عنه أزرار غير قابلة للقراءة في الإشعارات:

image

بدلاً من

This image shows a rectangular blue bar with white text that appears to be instructions in German for how to reply to an email, with the German words "Rufe das Thema auf oder antworte auf diese E-Mail, um zu antworten." (Captioned by AI)

حاليًا، النمط المعني هو

font-weight: normal;; text-decoration: none; font-weight: bold; color: #006699;; background-color: #2F70AC; color: #FFFFFF; border-top: 4px solid #2F70AC; border-right: 6px solid #2F70AC; border-bottom: 4px solid #2F70AC; border-left: 6px solid #2F70AC; display: inline-block; font-weight: bold;

إذا تم تغييره ليشمل التعريفات الأخيرة فقط

font-weight: normal; text-decoration: none; font-weight: bold; background-color: #2F70AC; color: #FFFFFF; border-top: 4px solid #2F70AC; border-right: 6px solid #2F70AC; border-bottom: 4px solid #2F70AC; border-left: 6px solid #2F70AC; display: inline-block; font-weight: bold;


يتم الحصول على السلوك المطلوب.

نظرًا لعدم وجود فائدة من إرسال الأنماط التي تم الكتابة فوقها لاحقًا، يمكن حل مشاكل العرض مع عارضات البريد الإلكتروني المعيبة عن طريق إرسال تعريفات CSS النهائية فقط.

إعجابَين (2)

يوجد تطبيق في

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

إذا كنت ترغب في تقديم طلب سحب، فسأقوم بدمجه بكل سرور :+1:

إنه لا يحل هذه المشكلة، ولكن وجود تنسيق مكرر أمر مسرف وعرضة للأخطاء على أي حال.

سأقوم بإجراء بعض التعديلات الطفيفة على دالة deduplicate_style، وبشكل أساسي للتأكد من وجود كل من key و values.

def deduplicate_style(style)
  styles = {}

  style
    .split(";")
    .select(&:present?)
    .map { _1.split(":", 2).map(&:strip) }
    .each { |k, v| styles[k] = v if k.present? && v.present? }

  styles.map { |k, v| "#{k}:#{v}" }.join(";")
end
إعجابَين (2)

شكرًا، تم دمجها للتو :git_merged:

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

تم إغلاق هذا الموضوع تلقائيًا بعد يومين. لم يعد يُسمح بالردود الجديدة.