PHP FormMail :備忘録
以前使っていたサーバー用に書いたPHP用のFormMailスクリプトだが、ロリポに移したら文字化けしてしまった。
原因がわかったので書き留めておく。
前サーバーのPHPバージョンが4.0.6で、ロリポが4.3.8。
これ以外のバージョンではテストしていないので、どのへんから仕様が変わったのか特定していないのだが、4.0.6では文字エンコードの指定に「mb_language」関数を使えば事足りていたが、4.3.8では「mb_internal_encoding」関数を追加する必要があったみたい。
詳細は調べていないが、これで正常に送信出来たので良しとしよう。
// PHP4.0.6 のメール送信処理
Function jmail($mail_to,$mail_subject,$mail_body,$mail_header){
// メール送信用言語(エンコードを日本語に設定)
mb_language("ja");
// メール送信(上のエンコード設定で送信)
mb_send_mail($mail_to,$mail_subject,$mail_body,$mail_header);
}
// 送信先のメールアドレスを設定
$mail_to = "info@××××.×××";
// 送信メールの Subject(件名)を設定
$mail_subject = "■■お問い合せメール■■";
↓↓↓↓変更↓↓↓↓
Function jmail($mail_to,$mail_subject,$mail_body,$mail_header){
// メール送信用言語(エンコードを日本語に設定)
mb_language("ja");
// PHP4.3.8 のメール送信処理に必要
mb_internal_encoding( "Shift_JIS" ) ;
// メール送信(上のエンコード設定で送信)
mb_send_mail($mail_to,$mail_subject,$mail_body,$mail_header);
}
// 送信先のメールアドレスを設定
$mail_to = "info@××××.×××";
// 送信メールの Subject(件名)を設定
$mail_subject = "■■お問い合せメール■■";
こんな感じ。



November 22, 2004