[PHP-users 2185] Re: パイプ使用してのメール送信で subject 文字化け

TAKAHASHI Masayoshi php-users@php.gr.jp
Thu, 20 Sep 2001 13:38:20 +0900


高橋征義です。

[PHP-users 2180]にて、
"Tsuyoshi Takahashi" <mltun@ml.vip.co.jp> wrote:
> パイプを使った場合のSubjectは
> mb_encode_mimeheader(mb_convert_encoding($Subject,"JIS"),"ISO-2022-JP","B","\n")
>> Subject: [my subject]
> =?ISO-2022-JP?B?GyRCRnxLXDhsJGIbKEIgT0sbJEIkSiROISkhKSEmISYh?=
>  =?ISO-2022-JP?B?JiEmISYhJiEmJDMkcyRKJEtEOSQvJEYkYiEpGyhC?=
> 
> mb_send_mail関数を使った場合のSubjectは
>> Subject: [my subject] =?ISO-2022-JP?B?GyRCRnxLXDhsGyhC?=
>  =?ISO-2022-JP?B?GyRCJGIbKEIgT0sbJEIkSiROISkhKSEmISYhJiEmISYhJiEmJDMbKEI=?=
>  =?ISO-2022-JP?B?GyRCJHMkSiRLRDkkLyRGJGIhKRsoQg==?=

上の方は、「ESC $ B」(JIS X 0208-1983の指定)とかが、個々の符号化
されたテキスト(「=?ISO-2022-JP?B?」で始まり「?=」で終わっている部分)
には入ってないようですね(一番最初のやつにはついてますが)。

確かにRFC2047によれば、同じencode-wordに挟まれた linear-space-white
は無視して復元するべき、となっています。その通りに復号化していれば、
問題はないのでしょう。
でも、メールソフト側で正しくdecodeできるとは限らない(そもそものPHP4
自身のdecode関数もちゃんとdecodeできていない)のであれば、個々の
符号化テキストごとにcharsetの指定が入るように、
mb_encode_mimeheader を修正した方がいいのではないでしょうか。

# と言いつつ、patchまでは出せないのでした。すみません(_o_)

高橋征義 (TAKAHASHI Masayoshi)       Email:maki@inac.co.jp