I'm writing a webmail product and some emails have body css that changes the background ... so when I Html.Decode() that emailbody, it's altering the CSS of the entire page.
Is there a good way to contain that problem?
メールのルールよりも具体的な CSS を作成できます。例えば:
body.body
.body
またはより具体的であるbody
上記のより少ない例のスタイルと衝突する body.body のスタイルはオーバーライドされます。ただし、スタイルが一緒にマージされないようにするには、すべてのスタイルを定義する必要があります。
または、メールの CSS を書き換えることもできます。これは、最近のほとんどの Web メール/デスクトップ メール クライアントが何らかの方法で行っている方法です。たとえば、すべてのルールの前に を付け、電子メールをタグ#emailMessage
内に配置すると、電子メール内の<div id="emailMessage"></div>
すべてのスタイルがその名前空間内でのみ適用されます。
iframe を使用して電子メールを表示すると、アクセシビリティなどに基づいてさらに問題が発生するだけです。頑張ってください。
あなたの質問への答えはおそらく「iframe」ですが、あなたの特定の状況では、ウェブメールクライアントを書くことは「すべてが持っている多種多様なクライアントによって生成されたおそらく非常に無効なhtmlからcssを取り除く」と呼ばれる素晴らしい新しい地獄を紹介します電子メールでどのような種類のHTMLを許可するかについての彼ら自身の考え」。
幸運を!
一般的な方法はiframeを使用することですが、これが問題に当てはまるかどうかはわかりません。
基本的に、別のページ内に別のhtmlページをロードします。これは独立していますが、1つの電子メールを表示するために2ページあることを意味します。