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

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


濱井です。二重に間違っています(_._)

2003/07/02 18:37:39 +0900に私が送ったメールに関する訂正です。

>濱井です。
>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: B..."というような表示の間違いです。

"Subject: Re: =?ISO-2022-JP?B..."です。

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


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