2012.
07.
05
16:51:30
添付ファイル付きのメールフォームをPHPで作りましてね。
PHPMailerを使ってみたのです。
初めて使ってみたのですが思ったより楽。
そのまんまなサンプルがいっぱいあったので
パクってきてこんなんしてみましたよφ(--)
//ライブラリ読み込み
require(dirname(__FILE__) . "/class.phpmailer.php");
//言語設定、内部エンコーディングを指定する
mb_language("japanese");
mb_internal_encoding("UTF-8");
$to = "to@hoge.hoge"; //宛先
$subject = "件名"; //件名
$body = "本文です。"; //本文
$from = "from@hoge.hoge"; //差出人
$attachfile = "./hoge.zip"; //添付ファイルパス
$mail = new PHPMailer();
$mail->CharSet = "iso-2022-jp";
$mail->Encoding = "7bit";
$mail->AddAddress($to);
$mail->From = $from;
$mail->FromName = "";
$mail->Subject = mb_encode_mimeheader(mb_convert_encoding($subject,"JIS","UTF-8"));
$mail->Body = mb_convert_encoding($subject,"JIS","UTF-8");
//添付ファイル追加
$mail->AddAttachment($attachfile);
if(!$mail->Send()){
throw new Exception("error:". $mail->ErrorInfo);
}
完了\(--)/
と思ったらひとつ弱点がありまして、長い件名が文字化けするのです。
「Webサイトからのお問い合わせがございました。」ってな件名が
「Webサイトからのお問い合わせがございまし$?!#」になりやがった。
ふぁっきゅー。
ほんであれやこれやと調べて「mb_encode_mimeheader()」と
「mb_internal_encoding()」と「mb_convert_encoding()」の関係とか
いろいろと諸説があったりなかったりするのが分かりました。
ついでに勝手に改行が入ってうんちゃらとか
規約がかんちゃらとかあるようですが、
面倒臭いのでそこら辺は華麗にすっ飛ばして
$mail->Subject = mb_encode_mimeheader(mb_convert_encoding($subject,"JIS","UTF-8"));
を
$mail->Subject = mb_encode_mimeheader($subject,'ISO-2022-JP');
にしたら無事に件名が文字化けしなくなりましたよ。
完了\(-∀-)/
ホントに良いのかは実は分からんけど
取りあえずちゃんと動いてるから良しとする。
PHPMailerを使ってみたのです。
初めて使ってみたのですが思ったより楽。
そのまんまなサンプルがいっぱいあったので
パクってきてこんなんしてみましたよφ(--)
//ライブラリ読み込み
require(dirname(__FILE__) . "/class.phpmailer.php");
//言語設定、内部エンコーディングを指定する
mb_language("japanese");
mb_internal_encoding("UTF-8");
$to = "to@hoge.hoge"; //宛先
$subject = "件名"; //件名
$body = "本文です。"; //本文
$from = "from@hoge.hoge"; //差出人
$attachfile = "./hoge.zip"; //添付ファイルパス
$mail = new PHPMailer();
$mail->CharSet = "iso-2022-jp";
$mail->Encoding = "7bit";
$mail->AddAddress($to);
$mail->From = $from;
$mail->FromName = "";
$mail->Subject = mb_encode_mimeheader(mb_convert_encoding($subject,"JIS","UTF-8"));
$mail->Body = mb_convert_encoding($subject,"JIS","UTF-8");
//添付ファイル追加
$mail->AddAttachment($attachfile);
if(!$mail->Send()){
throw new Exception("error:". $mail->ErrorInfo);
}
完了\(--)/
と思ったらひとつ弱点がありまして、長い件名が文字化けするのです。
「Webサイトからのお問い合わせがございました。」ってな件名が
「Webサイトからのお問い合わせがございまし$?!#」になりやがった。
ふぁっきゅー。
ほんであれやこれやと調べて「mb_encode_mimeheader()」と
「mb_internal_encoding()」と「mb_convert_encoding()」の関係とか
いろいろと諸説があったりなかったりするのが分かりました。
ついでに勝手に改行が入ってうんちゃらとか
規約がかんちゃらとかあるようですが、
面倒臭いのでそこら辺は華麗にすっ飛ばして
$mail->Subject = mb_encode_mimeheader(mb_convert_encoding($subject,"JIS","UTF-8"));
を
$mail->Subject = mb_encode_mimeheader($subject,'ISO-2022-JP');
にしたら無事に件名が文字化けしなくなりましたよ。
完了\(-∀-)/
ホントに良いのかは実は分からんけど
取りあえずちゃんと動いてるから良しとする。