그렇게 하지 않아도 대부분의 이메일 클라이언트에서는 특정 배경색을 강제할 수 있습니다. 예외는 일부 구형 Outlook 데스크톱 이메일 클라이언트인 것 같습니다. (데스크톱 클라이언트에서 다크 모드가 많이 사용되지 않는다고 추측합니다.)
iOS( Gmail 제외) 이메일 클라이언트의 경우, apply custom styles to digest 설정이 활성화되어 있으면 Discourse가 이미 이렇게 처리하고 있습니다. 문제는 배경색이 하드코딩되어 있어 사이트의 “header background” 색상을 존중하지 않는다는 것입니다:
[dm='header'] 규칙을 다음과 같이 변경할 수 있습니다:
"
[dm='header'] {
background: ##{ColorScheme.hex_for_name('header_background')} !important;
}
"
의미가 있다면 “Since your last visit” 섹션에도 유사한 접근 방식을 적용할 수 있습니다:
"
[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에 선형 그라디언트 배경색을 추가하는 것이 괜찮을 것입니다.
전체 색상을 반전시키는 이메일 클라이언트에서 “Since your last visit” 섹션을 처리하는 가장 쉬운 해결책은 클라이언트가 반전을 수행하도록 두되, email accent accent bg color와 email accent fg color 설정 사이에 충분한 대비가 있도록 하는 것이라고 추측합니다:
이렇게 하면 다음과 같은 경우(해당 설정의 기본값인 경우)를 방지할 수 있습니다:

