最近、HTML形式の文字の分布を詳しく調べる機会がありました。 有効なメーリングリストレイアウトのトピックについて書かれた記事は数多くありますが、これはそれに関するものではありません。 各メーラーには、HTML文字を表示するという独自の特性があることが知られています。 これらの機能と、異なるメーラーでの文字の表示の違いに興味がありました。
mail.ru、yandex.ru、およびgmail.comサービスの3つのメールボックスが調査対象になりました。 HTML形式で同じ文字を送信するスクリプトが作成されました。 それを使用して、いくつかのオプションを実行し、結果を比較しました。 起こったことは次のとおりです。
ボディタグ
メーラーによって表示されるレターの本文は、bodyタグで始まります。 それは理解できる-全体の手紙がそれに含まれています。 ただし、bodyタグ自体にはスタイル属性が含まれる場合があります。 各メーラーでは、レターの本文はdivで表されますが、全員がスタイルの内容をこのdivに転送するわけではありません。
- Mail.ru -bodyタグは<div id = 'style_ id _BODY'>に置き換えられます。idはGETリクエスト行で送信されるユーザーIDです。 スタイル属性は失われます。 さらに、bodyタグに指定された他の属性は失われます。
- Yandex.ru -bodyタグが<div class = 'b-message-body__content'>に変わります。 スタイルは、他のbodyタグ属性のように移植性がありません。
- Gmail.com -bodyタグが通常のdivに変わり、スタイルが転送されます。 さらに、本文に設定された属性は、このdivに分類されます(つまり、背景タイプの属性)。
スタイル属性を転送するための機能
スタイル属性は多くの場合メールエンジンによって解析され、ユーザーに送信される前に変更できます。 これは、調査したメーラーでどのように発生しますか?
- Mail.ru-スタイル属性は、「すべてが許可され、明らかに禁止されていない」という原則に従って処理されます。 これまでのところ、その位置を見つけることが可能でした:絶対は禁止に該当します。
- Yandex.ru-スタイル属性は前処理されています。 なじみのないスタイル(および、それに応じてエラー)はスキップされません。 スタイルのトリミングは、最初の未知のものまでのすべてのスタイルがクライアントに表示される文字に入るように行われます。 したがって、構築幅:100ピクセル、新しいスタイル:新しい、背景色:#CCC; width:100pxに置き換えられます。
- Gmail.com-スタイル属性も前処理されますが、この場合、要件はYandex.ruよりも厳しいです。 属性値に少なくとも1つの無効なスタイルが見つかった場合、属性全体が無視されます。
負の値
HTMLメーリングのレイアウトに関するすべての記事で、負の値(たとえば、マージン)は忘れられる可能性があることが繰り返し述べられています。 テスト結果は非常に期待されています:
- Mail.ru-マージン左:-100px; -それは動作します。
- Yandex.ru- マージン左:-100px; -動作しません。
- Gmail.com- 左マージン:-100px; -動作しません。
Mail.ruのmargin属性は、そこのスタイルが前処理を受けないためにのみスキップされます。
CSS3サポート
CSS 3は現在開発中であり、一部のメーラーは特定の属性が無効であると見なしています。 そのため、3つのクライアントでいくつかのCSS3ルールをテストします。
Mail.ru
スタイルタグの非常に忠実なフィルタリングにより、CSS3およびその他のブラウザー依存の属性を完全にサポートします。
Yandex.ru
- 線形勾配 -はい
- ボックスシャドウ -いいえ
- ボーダー半径 -はい
- テキスト影 -いいえ
- ワードラップ -いいえ
- サイズ変更 -いいえ
- いくつかのbackground'ov-はい
- ボーダー画像-はい
Gmail.com
- 線形勾配 -なし
- ボックスシャドウ -いいえ
- ボーダー半径 -はい
- テキストシャドウ -はい
- ワードラップ -はい
- サイズ変更 -いいえ
- いくつかのbackground'ov-はい
- ボーダー画像 -no
CSSの高さ
高さ属性は、すべてのメーラーでサポートされているわけではありません。
- Mail.ru-サポートされています。
- Yandex.ru-サポートされています。
- Gmail.com-サポートされず、min-heightに置き換えられました。
UPD:コメントでは、javascript:***やexpression:***などのトリックがmail.ruセキュリティシステムによってブロックされていることが判明しました。