Resolve final styles in email notifications

Zumindest rendert der Posteo.de Web-E-Mail-Client Farben mit dem ersten Wert, der in einer CSS-Stildefinition angegeben wird, was zu unlesbaren Schaltflächen in Benachrichtigungen führt:

image

anstatt

Dieses Bild zeigt einen rechteckigen blauen Balken mit weißem Text, der Anweisungen auf Deutsch enthält, wie man auf eine E-Mail antwortet, mit den deutschen Wörtern „Rufe das Thema auf oder antworte auf diese E-Mail, um zu antworten.“ (Beschriftet von KI)

Derzeit ist der entsprechende Stil:

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;

Wenn nur die neuesten Definitionen einbezogen werden:

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;

erhält man das gewünschte Verhalten.

Da es keinen Vorteil bringt, später überschriebene Stile zu senden, könnten Darstellungsprobleme mit fehlerhaften E-Mail-Viewern behoben werden, indem nur die endgültigen CSS-Definitionen gesendet werden.

2 „Gefällt mir“

Es gibt eine Implementierung in

1 „Gefällt mir“

Wenn Sie Lust haben, einen Pull Request zu erstellen, werde ich ihn gerne zusammenführen :+1:

Er löst zwar nicht dieses Problem, aber doppelte Styling-Regeln sind verschwenderisch und fehleranfällig.

Ich würde einige kleine Anpassungen an der Funktion deduplicate_style vornehmen, hauptsächlich um sicherzustellen, dass sowohl der key als auch die values vorhanden sind.

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 „Gefällt mir“

Danke, gerade zusammengeführt :git_merged:

1 „Gefällt mir“

Dieses Thema wurde nach 2 Tagen automatisch geschlossen. Neue Antworten sind nicht mehr möglich.