これは、いくつかの画像と簡単に適用できるソリューションを備えた短い投稿になるはずでした。しかし、手に負えなくなりました。HTMLメールは難しいです。面白半分に、これがどのようにうまくいかなくなるかを見てみましょう: Gmail's dark mode · Issue #68 · hteumeuleu/email-bugs · GitHub ![]()
この投稿を自由に読み飛ばし、画像を見てください。投稿の終わりまでに、ダークモードの人気のため、現在のコードにハックされたソリューションを追加しようとするのではなく、ダイジェストメールを再構築する価値があるかもしれないという結論に至っていました。それは私次第ではありませんし、おそらく私はこれに長すぎただけかもしれません。
ダークモードに設定されたメールクライアントでダイジェストメールがどのようにレンダリングされるかについて、最近の質問がありました。主な問題は、ダークモードを完全な色の反転で処理するメールクライアント(Gmailアプリ(iOS)、Outlook 2021(Windows)、Office 365(Windows)、Windows Mail)で、ダイジェストヘッダーの背景色が反転することです。これにより、ヘッダーの色とサイトのロゴの間にコントラストの問題が生じます。
これらのメールクライアントは、ボタンのテキストの色と、ダイジェストの「前回訪問以降」セクションにも問題を抱えています。
以下のすべての画像は、Litmusメールテストサービスからのものです:
ダークカラースキームのDiscourseサイトから、透明な背景を持つ白いPNGロゴを使用しています:
期待通り(Gmailアプリ ダークモード for Android):
悪い(Gmail ダークモード for iOS、OL Office 365 ダークモード、Outlook 2021 ダークモード、Windows 10 Mail ダークモード):
モバイルクライアントの概要(Gmail for iOSは、ヘッダーの色に明らかな問題がある唯一のクライアントです):
ここでは、Metaダイジェストメール(デフォルトのライトカラースキーム、透明な背景のダークPNGロゴ)で同じテストを行います。Metaでは、「ダイジェストにカスタムスタイルを適用する」サイト設定が有効になっていないため、サポートしているクライアント(Apple Mailおよび最近のバージョンのiOS Mail)用のダークモードメタタグとスタイルを取得していません。apply custom styles to digest設定が有効になっていれば、iPhoneのダークモードテストでもロゴ/背景色のコントラストに問題が生じるのではないかと推測します。
メールヘッダーの背景色をサイトのデフォルトカラースキームの色に一致させるように強制するには、いくつかの方法があります:
Gmailアプリ for iOSの場合、ヘッダーの背景色は、linear-gradientで作成された背景画像で設定できます。このように作成された背景画像は、色が反転しません。トリックは、linear-gradientの両方の色をDiscourseサイトのデフォルトカラースキームの「ヘッダー背景」色の値に設定することです。
これは、管理 / カスタマイズ / メールスタイル / CSSタブにカスタムCSSを追加することで実現できます。色値をデフォルトカラースキームの「ヘッダー背景」色の値に設定します。(注:メールCSSエディタで色を設定するためにvar(--header_background)を使用することはできません):
.digest-header {
background-image: linear-gradient(#111, #111);
}
Metaダイジェストメールでこのアプローチをテストしましたが、デフォルトのカラースキームがライトのサイトのソリューションとしては、疑問を感じ始めています。ロゴは読みやすいですが、これは少し奇妙に見えませんか?
Outlook 2021 DarkおよびWindows 10 Mail Darkデスクトップメールクライアントの場合、ヘッダーの背景色の反転の問題は、.digest-headerに設定されているbackground-colorに!importantルールを追加することで修正できます。これはカスタムCSSでは実現できません。Discourseはすでに!importantルールなしで要素にbackground-colorスタイルを追加しており、そのルールはカスタムCSSの後に追加されるため、優先されます。(注:このアプローチは、背景色をダークカラーに強制する場合にのみ機能するようです。ヘッダーの背景を#ffffffに強制しようとすると失敗します。)
フルカラー反転を実行するメールクライアントでの「前回訪問以降」セクションのテキスト色の問題には、簡単な解決策はないようです。iOS Gmailのハックがここで提案されています:https://www.hteumeuleu.com/2021/fixing-gmail-dark-mode-css-blend-modes/。これは、ブレンドモードを使用してGmailを騙し、白いテキスト色を設定させます。理論上は機能しますが、ダイジェストメールのマークアップの複雑さを考えると、追求する価値はないと思います。
要約すると、デフォルトのカラースキームがダークのDiscourseサイトの場合、現時点での良い解決策は、上記のCSSをメールスタイル/ CSSタブに追加することだと思います。これにより、iOS Gmailダークモードアプリでサイトのロゴが読みやすくなります。追加しても、テストした他のメールクライアントに問題は発生していません。デフォルトのカラースキームがライトのサイトの場合、そのアプローチについてはあまり確信が持てません。それ以外はダークな画面に白いヘッダー背景を強制しても、見た目はあまり良くありません。
ダイジェストメールは、ダークモードが一般的に使用される前に開発されました。おそらく、ダークモードの人気が高まっているため、人気のあるメールクライアントでダークモードとライトモードの両方でうまく表示されるように、ダイジェストメールを再構築することが理にかなっているでしょう。
ダイジェストメールの完全な再構築が範囲外である場合、dark_mode_digest_logoおよびlight_mode_digest_logo設定を提供することを検討する価値があるかもしれません。少なくとも一部のメールクライアントでは、モードを検出して適切なロゴを表示することが可能になります。
Outlookデスクトップクライアントでのダークモードを改善するために、DiscourseはメールのHTMLからすべてのクラス名を削除するのではなく、いくつかのクラス名を残しておくことができます。これらのクラス名は、Outlookでダークモードをターゲットするために使用できます:https://litmus.com/community/discussions/8256-outlook-app-vs-dark-mode-on-ios-a-disaster#comment-16402。(注:Outlookは要素の複数のクラス名を処理できないため、`digest.html.erb`ファイルからいくつかのクラス名を削除する必要があります。)











