Sem fazer isso, é possível forçar cores de fundo específicas na maioria dos clientes de e-mail, as exceções parecem ser alguns dos clientes de e-mail desktop mais antigos do Outlook. (Eu acho que o modo escuro não é muito usado em clientes desktop.)
Para clientes de e-mail iOS (excluindo Gmail), o Discourse já está fazendo isso se a configuração apply custom styles to digest estiver habilitada. O problema é que ele está codificando a cor de fundo e não respeitando a cor “header background” do site:
A regra [dm='header'] poderia ser alterada para:
"
[dm='header'] {
background: ##{ColorScheme.hex_for_name('header_background')} !important;
}
"
Se fizesse sentido, uma abordagem semelhante poderia ser tomada para a seção “Since your last visit”:
"
[dm='body_primary'] {
background: #{SiteSetting.email_accent_bg_color} !important;
color: #{SiteSetting.email_accent_fg_color} !important;
}
"
Note que o atributo dm para estilos de modo escuro é adicionado ao e-mail aqui: discourse/lib/email/styles.rb at main · discourse/discourse · GitHub.
Algo assim deve funcionar para corrigir o problema em clientes de e-mail iOS (excluindo Gmail).
Para o cliente Gmail do iOS, as cores de fundo podem ser forçadas definindo-as com um gradiente linear. Não parecem haver efeitos colaterais indesejados de definir uma cor de fundo em gradiente linear desta forma para todos os clientes de e-mail. Portanto, deve ser bom apenas adicionar uma cor de fundo em gradiente linear ao CSS inline que é enviado para todos os clientes de e-mail.
Minha suspeita é que a solução mais fácil para lidar com a seção “Since your last visit” para clientes de e-mail que realizam uma inversão completa de cores seria apenas deixar os clientes realizarem a inversão, mas garantir que haja muito contraste entre as configurações de email accent accent bg color e email accent fg color:
Isso deve evitar casos como este (com os valores padrão dessas configurações):

