Dies sollte ein kurzer Beitrag mit ein paar Bildern und einer einfach anzuwendenden Lösung sein. Es ist außer Kontrolle geraten. HTML-E-Mail ist schwierig. Zum Spaß, hier ist, wie es schiefgehen kann: Gmail's dark mode · Issue #68 · hteumeuleu/email-bugs · GitHub ![]()
Sie können diesen Beitrag gerne überfliegen und sich die Bilder ansehen. Am Ende des Beitrags kam ich mehr oder weniger zu dem Schluss, dass es aufgrund der Beliebtheit des dunklen Modus lohnenswert sein könnte, die Digest-E-Mail zu überarbeiten, anstatt zu versuchen, Hacks auf den aktuellen Code anzuwenden. Das liegt nicht in meiner Hand, und vielleicht habe ich mir das einfach zu lange angesehen.
Es gab einige aktuelle Fragen, wie Digest-E-Mails auf E-Mail-Clients gerendert werden, die auf dunkles Modus eingestellt sind. Das Hauptproblem ist, dass die Hintergrundfarbe des Digest-Headers auf E-Mail-Clients, die den dunklen Modus durch eine vollständige Farb-Invertierung handhaben (Gmail-App (iOS), Outlook 2021 (Windows), Office 365 (Windows) und Windows Mail), invertiert wird. Dies führt zu einem Kontrastproblem zwischen der Header-Farbe und dem Website-Logo.
Diese E-Mail-Clients haben auch Probleme mit der Textfarbe in Schaltflächen und im Abschnitt “Seit Ihrem letzten Besuch” des Digests.
Alle unten stehenden Bilder stammen vom Litmus E-Mail-Testdienst:
Von einer Discourse-Website mit einem dunklen Farbschema, die ein weißes PNG-Logo mit transparentem Hintergrund verwendet:
Erwartet (Gmail App Dunkel für Android):
Schlecht (Gmail Dunkel für iOS, OL Office 365 Dunkel, Outlook 2021 Dunkel, Windows 10 Mail Dunkel):
Übersicht der mobilen Clients (Gmail für iOS ist der einzige Client mit offensichtlichen Problemen mit der Header-Farbe):
Hier ist der gleiche Test mit der Meta-Digest-E-Mail (Standard-helles Farbschema, dunkles PNG-Logo auf transparentem Hintergrund). Beachten Sie, dass Meta die Website-Einstellung apply custom styles to digest nicht aktiviert hat, sodass sie keine Dark-Mode-Metatags und -Stile für Clients erhält, die diese unterstützen (Apple Mail und neuere Versionen von iOS Mail). Wenn die Einstellung apply custom styles to digest aktiviert wäre, vermute ich, dass die iPhone Dark-Tests auch Probleme mit dem Kontrast zwischen Logo und Hintergrundfarbe hätten.
Es gibt ein paar Möglichkeiten, wie die Hintergrundfarbe des E-Mail-Headers gezwungen werden kann, mit der Farbe des Standardfarbschemas der Website übereinzustimmen:
Für die Gmail-App für iOS kann die Hintergrundfarbe des Headers mit einem Hintergrundbild gesetzt werden, das mit einem linear-gradient erstellt wurde. Auf diese Weise erstellte Hintergrundbilder werden nicht farblich invertiert. Der Trick besteht darin, beide Farben des linear-gradient auf den Wert der “Header-Hintergrundfarbe” des Standardfarbschemas der Discourse-Website zu setzen.
Dies kann jetzt erreicht werden, indem benutzerdefinierte CSS zum Tab Admin / Customize / Email Style / CSS hinzugefügt werden. Setzen Sie die Farbwerte auf den Wert der “Header-Hintergrundfarbe” Ihres Standardfarbschemas. (Beachten Sie, dass es nicht möglich ist, var(--header_background) zu verwenden, um die Farbe im E-Mail-CSS-Editor festzulegen):
.digest-header {
background-image: linear-gradient(#111, #111);
}
Beim Testen dieses Ansatzes für die Meta-Digest-E-Mail beginne ich, Zweifel daran als Lösung für Websites mit einem hellen Standardfarbschema zu haben. Das Logo ist lesbar, aber sieht das nicht ein wenig seltsam aus?
Für die Desktop-E-Mail-Clients Outlook 2021 Dark und Windows 10 Mail Dark kann das Problem der Invertierung der Header-Hintergrundfarbe behoben werden, indem eine !important-Regel zur background-color hinzugefügt wird, die für .digest-header gesetzt ist. Dies kann nicht über benutzerdefiniertes CSS erreicht werden, da Discourse bereits einen background-color-Stil zu dem Element hinzufügt, ohne die !important-Regel. Diese Regel wird nach dem benutzerdefinierten CSS hinzugefügt, sodass sie Vorrang hat. (Beachten Sie, dass dieser Ansatz nur zu funktionieren scheint, um die Hintergrundfarbe auf eine dunkle Farbe zu erzwingen. Er schlägt fehl, wenn ich versuche, den Header-Hintergrund auf #ffffff zu erzwingen.)
Das Problem mit der Textfarbe im Abschnitt “Seit Ihrem letzten Besuch” für E-Mail-Clients, die eine vollständige Farb-Invertierung durchführen, scheint keine einfache Lösung zu haben. Hier wird ein iOS-Gmail-Hack vorgeschlagen: Fixing Gmail’s dark mode issues with CSS Blend Modes — HTeuMeuLeu.com. Er verwendet Mischmodi, um Gmail dazu zu bringen, eine weiße Textfarbe einzustellen. Das funktioniert theoretisch, aber angesichts der Komplexität des Markup der Digest-E-Mail glaube ich nicht, dass es sich lohnt, dies weiter zu verfolgen.
Zusammenfassend denke ich, dass für Discourse-Websites mit einem dunklen Farbschema als Standardfarbschema eine gute Lösung für den Moment darin besteht, das oben gepostete CSS zum Tab “Email Style / CSS” hinzuzufügen. Dies macht das Website-Logo in der iOS Gmail Dark-App lesbar. Das Hinzufügen hat bei anderen getesteten E-Mail-Clients keine Probleme verursacht. Für Websites mit einem Standard- hellen Farbschema bin ich mir bei diesem Ansatz weniger sicher. Das Erzwingen eines weißen Header-Hintergrunds auf einem ansonsten dunklen Bildschirm sieht nicht gut aus.
Die Digest-E-Mail wurde entwickelt, bevor der dunkle Modus häufig verwendet wurde. Vielleicht wäre es angesichts der jüngsten Popularität des dunklen Modus sinnvoll, die Digest-E-Mail mit dem Ziel zu überarbeiten, sie sowohl im dunklen als auch im hellen Modus auf gängigen E-Mail-Clients gut darzustellen.
Wenn die vollständige Überarbeitung der Digest-E-Mail außer Reichweite ist, könnte es sich lohnen, die Bereitstellung von dark_mode_digest_logo- und light_mode_digest_logo-Einstellungen in Betracht zu ziehen. Auf zumindest einigen E-Mail-Clients wird es möglich sein, den Modus zu erkennen und das entsprechende Logo anzuzeigen.
Um den dunklen Modus auf Outlook-Desktop-Clients zu verbessern, könnte Discourse einige Klassennamen im HTML der E-Mail belassen, anstatt sie alle zu entfernen. Diese Klassennamen könnten verwendet werden, um den dunklen Modus auf Outlook zu zielen: https://litmus.com/community/discussions/8256-outlook-app-vs-dark-mode-on-ios-a-disaster#comment-16402. (Beachten Sie, dass Outlook keine mehreren Klassennamen auf einem Element verarbeiten kann, daher müssten einige Klassennamen immer noch aus der Datei digest.html.erb entfernt werden.)











