人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

PHPメール送信 ヘッダの日本語エンコード方法は?

下記スクリプトでメール送信すると、
From:
To:
が文字化けします。
普通はどうやって解決するのでしょうか?

<?php
$header = ’From: 菅山かおる <kaoru@bihaku.com>’;
$to = ’ファンの皆様 <fun@mina.sama>’;
$subject = ’応援してね’;
$r = mb_send_mail($to, $subject, $message, $header);
?>

●質問者: radio3
●カテゴリ:コンピュータ
✍キーワード:MESSAGE PHP エンコード スクリプト メール
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● nalchin
●10ポイント

http://php.s3.to/man/function.mb-send-mail.html

mb_send_mail

URLはダミーです。


基本は、

文字列を mb_convert_encoding() でSJIS変換

文字列を mb_encode_mimeheader() でMIME変換

その後、メール送信ですが

> ヘッダと メッセージは mb_language()の設定に基づき変換、 エンコードされます。

となっているので、


mb_send_mail()関数 の前に

mb_language()関数で言語の設定が必要かもしれません。


それと、mail()関数 の注意事項で

> to引数には ”Something <someone@example.com>” の形式の

> メールアドレスを与えることはできません。

となっているので、to ではなく

ヘッダで送信者のアドレスを追加しておく必要がありそうです。


(例)

<?php

$to = NULL;

$ToName = ’ファンの皆様’;

$ToMail = ’fun@mina.sama’;

$FromName = ’菅山かおる’;

$FromMail = ’kaoru@bihaku.com’;

$subject = ’応援してね’;

$message = ’メール本文’;


// 念の為、言語と文字コードの設定

mb_language(”Japanese”);

mb_internal_encoding(”SJIS”);

mb_detect_order(”ASCII, JIS, UTF-8, EUC-JP, SJIS”);


// To を変換

$ToName = mb_encode_mimeheader(mb_convert_encoding($ToName,’JIS’,’auto’));

$header .= ’To: ’.$ToName.’ <’.$ToMail.’>’.”¥n”;


// From を変換

$FromName = mb_encode_mimeheader(mb_convert_encoding($FromName,’JIS’,’auto’));

$header .= ’From: ’.$FromName.’ <’.$FromMail.’>’.”¥n”;


// メール を送信

$r = mb_send_mail($to, $subject, $message, $header);


if($r) {

echo ”メール送信成功”;

}else{

echo ”メール送信失敗”;

}


?>


2 ● Keiichiro
●80ポイント

http://www.chameleonic.org/2005/07/09/chameleon/68

上記URLからの引用です。


============================

見事に件名と本文は日本語表示が正しく行えています。

送信者のところは、日本語を使用すると期待通りに化けてくれますが・・・ 。


fromヘッダやtoヘッダに日本語が含まれていると、その部分をJIS変換+エンコードしてやる必要がありますから、これはmb_encode_mimeheader関数の出番です。mb_send_mailもここまでは面倒見てくれません。


wp-contactform.phpの120行目(wp-contactform日本語版の場合)を以下のように書き換えました。


$headers = “From:” .mb_encode_mimeheader($name).” < $email>¥n”;


再度、送信者に日本語を使ったテストメールを発射してみると今度は、すべて文字化けせずに表示できました。

===================================

◎質問者からの返答

ばっちりです!ありがとうございました。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ