10

安全でないユーザー入力を含む可能性のあるコードで HTML メールを送信しようとしています。件名を html エスケープすると、GMail はエスケープされたコンテンツを表示することに気付きました (件名が である場合"This & That"、これを としてサニタイズすると"This & That"、Gmail は後者を表示します)。サンダーバードも同様です。すべての電子メール クライアントで、件名の html をエスケープする必要はないと考えてよいでしょうか?

4

3 に答える 3

12

件名に HTML エンティティをエンコードする必要はありません。HTML 本文でエンコードする理由は、XHTML を使用している場合です。XHTML は XML から派生しているため&、予約文字として扱われます。

ただし、電子メールの件名は HTML、XML、または XHTML ではありません。それはただの純粋なテキストです。このため、アンパサンドを としてエンコードする必要はありません&。エンコードすると、HTML として解析されないため、エンコードされたものとして表示されます。

ASCII 以外の文字 (例: £) を含めたい場合は、「封筒」全体 (メール本文を含む) を UTF-8 としてエンコードする必要があります。

したがって、コードでは、次のように表示されます。

        | Subject Line |    Body
====================================
&   |    &     |     &       
&       |      &       |     & 
UTF-8 £ |      £       |     £
ASCII £ |     n/a      |    n/a
£ |   £    |     £

注: Microsoft Office には UTF-8 の奇妙な実装があるため、すべての UTF-8 文字が機能するとは限りません。

于 2012-06-17T08:17:28.237 に答える
3

件名は html エスケープする必要はありませんが、エスケープできます。元の SMTP 仕様では、メッセージは ascii である必要があると定義されていました ( RFC822セクション 3)。これは RFC2822 で確認されましたが、RFC2047ではヘッダー拡張が定義されており、MIME メッセージ内のヘッダー フィールドをエンコードして非 ASCII テキストを許可できます。

このエンコードされた単語形式により、メール ヘッダー内で utf-8 などのエンコードを使用できます。例えば:

=?iso-8859-1?q?this=20is=20some=20text?=

これは、"this is some text" の ISO-8859-1 エンコード バージョンです。このメソッドは、シャープ記号 (£) やアクセント付き/非 ASCII 文字などを enode するために使用できます。

于 2012-06-13T14:03:23.583 に答える
2

件名フィールドは「HTMLコンテンツ」の外にあります。HTMLとは何の関係もありません。


しかし、私はこれについての参照を持っていません...

于 2012-06-12T18:31:36.083 に答える