[PHP-users 16390]Re: mailto送信時の文字化け

HAMAI Kyoichi k-hamai @ pb.jp.nec.com
2003年 7月 2日 (水) 18:37:39 JST


濱井です。
2003/07/02 17:48:12 +0900に私が送ったメールに関する訂正です。

>濱井です。
>2003/07/02 17:24:52 +0900に私が送ったメールの補足です。
>
>>>PHPにて
>>><a href="mailto:add @ domain?subject=タイトル&body=本文">メール送信</a>
>>>というHTMLスクリプトを表示させてメール送信機能を行おうとしています。
>>>ところが、実際にページを表示させ、クリックするとメールソフト(OUTLOOK2000)は
>>>立ち上がってくるのですが、タイトルと本文部分が化けてしまいます。
>>>タイトル、本文共に通常は日本語です。また、ページの文字コードはEUC-JPです。
>>>
>>>文字コードの違いでこのような現象が発生していると予測を付けて
>>>mb_convert_encode関数を使ってEUC-JPをSJISに変換してやってみるのですが
>>>うまくゆきません。
>>
>>メールの場合、ヘッダと本文ではエンコード方法が違います。
>>日本語の本文は単にISO-2022-JP(いわゆるJISコード)を使えばいいですが、
>>ヘッダの場合、MIMEヘッダと呼ばれるものを使います。
>>日本語のMIMEヘッダでは、ISO-2022-JPをさらにB64等でエンコードします。
>>MIMEヘッダに対応していないメーラーでは、"Subject: Re: B..."
>>というような表示がなされます。

"Subject: Re: =?ISO-2022-JP?B..."というような表示の間違いです。

>>
>>上記の場合は、href属性の値として指定するので、タイトルや本文をさらに
>>URLエンコードする必要があります。
>
>厳密に言うと、"&"はHTMLではエスケープすべき文字なので、"&amp;"と
>記述する必要があります。
>
>つまり、mailtoスキーマで日本語のメールを指定しようとすれば。
>
>(1)JISコードでエンコード
>(2)ヘッダのMIMEヘッダ化
>(3)URLエンコード
>(4)HTMLエスケープ
>
>といった手順を踏む必要があります。


PHP-users メーリングリストの案内