[PHP-users 27645] Re: mb_send_mailでメール件名が文字化け
tommy
tommy @ asobicreate.com
2005年 11月 28日 (月) 10:50:48 JST
富沢と申します。 mb_send_mail絡みの投稿が結構続いているので・・・
mb_send_mailを使わないという選択肢もあるかと思います。みもふたもない
言い方ですみませんが。うちの場合、携帯向けのメール配信でキャリア別に
charsetを変えたり、半角に変換したり、絵文字を送ったりと色々変わった処理
が必要になるので、いっそmb_send_mailは使わず、文字コードの変換やら
絵文字の処理やら、全角→半角の変換やらをキャリア別に行う汎用の関数
を作ってしまいました。元々絵文字が絡むとmb関係の関数がうまく動かな
いケースが多いんですよ。メールヘッダの仕組みなど、色々勉強する必要
があったんですが、一度作ってしまうともうメール送信で悩む必要がなく、
便利に使ってます。
具体的な処理としては、キャリア別に文字コードを変換、subjectなどはその後
base64でエンコードして、文字コードに合わせてメールヘッダやオプション文字
列( -f envelopeとか)を作って
$pp = popen(SENDMAIL_PATH . " $option $rcptto", "w");
fwrite ($pp,$header . CR);
fwrite ($pp,$body);
pclose($pp);
※SENDMAIL_PATH = そのサーバーのsendmailのコマンドパス
CR = \r\n
というような関数で直接sendmailに送り込んでいます。パワー要る方法ですが、
一つの選択肢として参考にして下さい。
PHP-users メーリングリストの案内