ヘッダーと本文の文字エンコードが異なるメールは有効ですか? ユースケース: メールの処理中に、ヘッダーの文字エンコードを個別に確認する必要がありますか? それとも、本文の文字エンコードを確認するだけで十分ですか? 誰かがこれを理解する方法について私を導くことができますか? 前もって感謝します!
1 に答える
メール ヘッダーは ASCII 文字セットを使用する必要があります。ヘッダー フィールドに別のエンコードを使用する場合は、エンコードされた単語の構文を使用する必要があります: http://en.wikipedia.org/wiki/MIME#Encoded-Word
電子メール本文は、それを転送するメール サーバーで 8 ビット MIME が有効になっている場合にのみ、別のエンコードで直接エンコードできます (現在、すべてのメール サーバーで有効になっている必要がありますが、保証されていません)。それ以外の場合は、本文を転送エンコードでエンコードする必要があります (引用-印刷可能または base64)
文字セットはケースごとに異なる場合があります。つまり、エンコードされたすべての単語を異なる文字セットで、すべてのメール部分を異なる文字セットでエンコードしたり、異なる転送エンコーディングを使用したりすることもできます。
たとえば、次のことができます。
Subject: =?UTF-8?Q?Zg=C5=82oszenie?= //header value in UTF-8 encoded with quoted printable
およびエンコードされた本文:
Content-Type: text/plain; charset="iso-8859-2"
Content-Transfer-Encoding: base64
WmG/87PmIEfqtmyxIEphvPE=
異なる文字セット、同じメール内の異なる転送エンコーディング、問題ありません。
経験から、そのようなメールは非常に一般的であると言えます。さらに悪いことに、Content-Type ヘッダーに 1 つの文字セットがあり、html body メタ タグに別の文字セットが含まれている電子メールを受け取ることがあります。
Content-Type: text/html; charset="iso-8859-2"
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charser=utf-8">
実際に使用される文字セットを推測するのはあなた次第です。おそらく、meta タグにあるものです。
何も仮定しないでください。すべてを期待してください。囚人を連れて行かないでください。これがスパルタです。