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

HAMAI Kyoichi k-hamai @ pb.jp.nec.com
2003年 7月 2日 (水) 17:48:12 JST


濱井です。
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..."
>というような表示がなされます。
>
>上記の場合は、href属性の値として指定するので、タイトルや本文をさらに
>URLエンコードする必要があります。

厳密に言うと、"&"はHTMLではエスケープすべき文字なので、"&amp;"と
記述する必要があります。

つまり、mailtoスキーマで日本語のメールを指定しようとすれば。

(1)JISコードでエンコード
(2)ヘッダのMIMEヘッダ化
(3)URLエンコード
(4)HTMLエスケープ

といった手順を踏む必要があります。



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