2012年3月18日日曜日

PHPでUTF-8のエンコーディングにてメールを送る(備忘録)

今までメールを送るときに、ISO-2022-JPにて本文をエンコーディングして送っていましたが
機種依存文字などの文字化け等が発生するため、linuxの内部エンコーディングであるUTF-8のエンコードのまま 
送信するために、以下のようにPHPプログラムを作成(サンプル)

<?PHP

//--------------------------------

//UTF-8でメール送信するモジュール

//2012-03-06 K.Miyaguchi

//--------------------------------

// mb_sendmailの第5引数で、リターンパスの設定を行っている

// 差出人のアドレスにリターンメールが届く仕組みです。

class INC_MAIL{

 

var $subject = "";

//メール送信受付

function INC_MAIL_send($subject, $mail_from, $name_from, $mail_to, $name_to, $txtbody){

//マルチバイトの設定

mb_language("uni");

mb_internal_encoding("UTF-8");

$txtbody=stripcslashes($txtbody);

$mime_from = mb_encode_mimeheader($name_from) . "<". $mail_from .">";

$mime_to   = mb_encode_mimeheader($name_to  ) . "<". $mail_to .">";

$header = <<<EOD

Replay-To: {$mime_from}

From: {$mime_from}

EOD;

if(mb_send_mail($mime_to,$subject,$txtbody,$header,"-f{$mail_from}")){

}else{

echo "mail send error!(mb_send_mail)";

}

}

}

 

?>

0 件のコメント:

コメントを投稿