不这样做,可以在大多数电子邮件客户端上强制设置特定的背景颜色,但一些旧的 Outlook 桌面电子邮件客户端似乎是个例外。(我猜深色模式在桌面客户端上使用率不高。)
对于 iOS(不包括 Gmail)电子邮件客户端,如果启用了 apply custom styles to digest 设置,Discourse 已经在这样做了。问题在于它硬编码了背景颜色,而不是遵循网站的“标题背景”颜色:
[dm='header'] 规则可以更改为:
"
[dm='header'] {
background: ##{ColorScheme.hex_for_name('header_background')} !important;
}
"
如果合理的话,可以对“自上次访问以来”部分采取类似的方法:
"
[dm='body_primary'] {
background: #{SiteSetting.email_accent_bg_color} !important;
color: #{SiteSetting.email_accent_fg_color} !important;
}
"
请注意,深色模式样式的 dm 属性在此处添加到电子邮件:discourse/lib/email/styles.rb at main · discourse/discourse · GitHub
类似这样的东西应该可以解决 iOS(不包括 Gmail)电子邮件客户端的问题。
对于 iOS Gmail 客户端,可以通过设置线性渐变来强制设置背景颜色。以这种方式为所有电子邮件客户端设置线性渐变背景似乎没有意外的副作用。因此,只需将线性渐变背景颜色添加到发送给所有电子邮件客户端的内联 CSS 中即可。
我怀疑,对于执行完全颜色反转的电子邮件客户端,处理“自上次访问以来”部分的解决方案是让客户端执行反转,但要确保 email accent accent bg color 和 email accent fg color 设置之间有足够的对比度:
这应该可以防止出现这种情况(使用这些设置的默认值):

