2007/12/27

PHP UTF-8でメール送信 

多少サーバの仕様によって違うようですが、今回はこの二つの方法で解決しました。

■某サーバ
$sub="メールタイトル";
$msg="メール本文";
$mailto="メールアドレス";

//言語設定日本語なのでjaとなります
mb_language("ja");

//UTF-8でコードを書いているので
mb_internal_encoding("UTF-8");


//本文の文字コードを変換
$msg = mb_convert_encoding($msg,'ISO-2022-JP');

//名前が日本語なので文字コードを変換
$from = "From:".mb_encode_mimeheader("フリップ")."<from@example.com>";

//タイトルはmd_send_mailが文字コード変換してくれるのでこのまま。
mb_send_mail($mailto,$sub,$msg,$from);

別なサーバではこんな感じ。

■sakuraインターネット
$sub="メールタイトル";
$msg="メール本文";
$mailto="メールアドレス";

//言語設定日本語なのでjaとなります
mb_language("ja");

//UTF-8でコードを書いているので
mb_internal_encoding("UTF-8");

//本文の文字コードを変換
$msg = mb_convert_encoding($msg,'ISO-2022-JP');

//タイトルも文字コード変換
$sub = mb_encode_mimeheader($sub);

//名前が日本語なので文字コードを変換
$from = "From:".mb_encode_mimeheader("フリップ")."<from@example.com>";

//mb_send_mailではなくmailで送信
mail($mailto,$sub,$msg,$from);

0 件のコメント: