Investigando problemas de modo escuro no e-mail de resumo de atividade

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):

1 curtida