[PHP-dev 97] Re: mb_send_mail()

Yasuo Ohgaki php-dev@php.gr.jp
Wed, 07 Nov 2001 18:34:39 +0900


大垣です。

mail()で日本語が使えるようにするのは big +1 です。

Rui Hirokawa wrote:

> 廣川です。
> 
> CVSアカウントを持っている人ということですので、意見を少し。
> 
> mail() については、phorumとかの日本語化をした時に
> 少し不便を感じました。
> 
> mail()関数自体で日本語が使えるのがやはり便利だと思います。


私もそう思います。

> 
> ただし、国際化作業により既存のコードに副作用がでることは避けなくては
> いけません。マルチバイト対応や国際化に対して理解のある人は
> PHPユーザ全体でみたらまだ小数派のような気がします。


私もかなり少ない、という印象を持っています。

> 
> PHP-4.0.6におけるHTTP入力における文字コード変換は、php_treat_variables()に
> 埋めこむのが筋ですが、現在はコンパイル時に丸ごとこの関数
> を上書きするようになっています。
> このやり方だと国際化機能を有効にしてコンパイルしてもらう必要が
> あるのでやや不便ですが、かといって、マルチバイト対応のコードを
> 元のコードにちりばめるのもなんだなと思います。
> (何か良いアイデアがありましたら教えて下さい。)


この辺りはコードを読んでいないのでコメントできません。:)

こんな事がありました、と言うことだけ書きます。

php-i18nに変数にencodingタグを付けてはどう?とメールがありました。
こうなっていると便利ですが、これを実装するのは結構大変です。
全体的にi8n化しないとすっきりしないかも知れません。誰かが手を付けて
いる様には思えません。

php-devにWezさんがマルチバイト文字処理についてメールを
出していたので、Java、Windowsの様に内部コードをUnicode
(Java, winとは違いますがUCS4)にしてしまっては?とメール
しておきました。どうなっているのかは不明です。

# UCS-4にするとシングルバイト圏に開発者からかなり反対
# されそうな気も、、、
# 内部コードを変える場合は、せめてUCS-2,UTF-16ならい
# いのですが、UTF-8は不公平なのでかんべんしてもらいたい、、

> mail()についても、ハンドラphp_mail()をコンパイル時に
> マルチバイト対応版(例えばmb_mail()に)差し替えてしまえば
> よいのではないかと思います。
> 
> configureに--enable-mbstr-trans-enc を指定したら有効になるように
> することができます。
> これなら比較的簡単で他の開発者にも反対はされにくいでしょう。


これで十分かつ賛成されやすいと思います。--enable-mbstr-trans-enc の
名前とも整合性がとれていると思います。

ただ、mbstringをSelf contained モジュールとしてコンパイルする場合
にどうするかを考える必要がある思います。また、mail()がマルチバイト対
応かどうかスクリプトから確認できるような関数も必要と思います。

# "mbstring.soをロードしてもmail()で日本語メールが化ける"と言う
# ユーザー必ずでてくると思います。
# 機能を確認できないと、ポータブルなスクリプトが書きづらいと思い
# ます。(あまり重要ではありませんが)

> あとは、php_mail()自体にマルチバイト対応のコードを入れるやり方も
> ありますが、こっちは自身ないです。


反対されそうな気がしますが、
いっそのこと、mbfilterをstandardにいれてもらうというのはどうでしょ
うか?

> サンプルのコードを示して頂ければ、本家php-devで提案をするなどして、
> 検討したいと思います。
> 

今忙しいので、コードは他の方に期待しています :)

--
Yasuo Ohgaki

__________________________________________________
Do You Yahoo!?
Yahoo! BB is Broadband by Yahoo!  http://bb.yahoo.co.jp/