戻る

メール操作

mb_send_mail()でのメール送信

PHPにはmail()関数がありますが、日本語のメール送信にはmb_send_mail()関数を使うのが便利でしょう。

mb_send_maail()関数を利用すると、php.iniの[mbstring]mbstring.languageやmb_language()関数で設定した言語に応じて、文字コード変換やエンコーディングをしてから、メールの送信をしてくれます。

mb_send_mail()の構文

論理値(TRUE/FALSE) = mb_send_mail(送信先,件名,内容[,追加ヘッダ][,追加パラメータ]);

例;

<?php
header("Content-type: text/html; charset=utf-8");

// カレントの言語を日本語に設定する
mb_language("ja");

// 内部文字エンコードを設定する
mb_internal_encoding("UTF-8");

//メールの宛て先アドレス
$mailto = "postmaster@localhost";
//メールの件名(サブジェクト)
$subject = mb_convert_encoding("タイトルですよ","JIS");
//メール本文。「\n」で改行
$content = mb_convert_encoding("内容をいれます\nあああ\nいいい","JIS");

//追加ヘッダ(差出人)
$mailfrom = "From:Admin@localhost";
$mailfrom = "From:" . mb_encode_mimeheader("Admin") . "<Admin@localhost>";

//(UNIX)送信の実行
if(mb_send_mail($mailto, $subject, $content, $mailfrom)){

//(Windows)送信者のみの場合、追加ヘッダは省略して送信可能
//if(mb_send_mail($mailto, $subject, $content)){
	echo "送信完了!♪";
}
else{
	echo "送信失敗・・・";
}
?>

追加ヘッダ

改行(\n)で区切ることで、複数のヘッダを指定可能です。CCを指定したい場合などは、以下のように記述します。

From:bbb@bbb.com\nCc:sss@sss.com

差出人に名前を入れたいとき、フォーマットを「From:差出人名<メールアドレス>」とすると名前を入れられます。差出人名の部分が日本語の場合、mb_encode_mimeheader()関数でエンコードする必要があります。

$mailfrom="From:" . mb_encode_mimeheader("あやこ") . ">bbb@bbb.com>";

添付ファイルをつける

<?php
// 宛て先アドレス
$mailTo	  = 'postmaster@localhost';
 
// メールのタイトル
$mailSubject = 'メールタイトルです';
 
// メール本文
$mailMessage = 'メール本文です';
 
// 添付するファイル
$dir = './path/';
$file = 'sample.jpg';
$fileName	= $dir.$file;
 
// 差出人のメールアドレス
$mailFrom	= 'Admin@localhost';
 
// Return-Pathに指定するメールアドレス
$returnMail  = 'Admin@localhost';
 
// メールで日本語使用するための設定をします。
mb_language("Ja") ;
mb_internal_encoding("UTF-8");
 
$header  = "From: $mailFrom\r\n";
$header .= "MIME-Version: 1.0\r\n";
$header .= "Content-Type: multipart/mixed; boundary=\"__PHPRECIPE__\"\r\n";
$header .= "\r\n";
 
$body  = "--__PHPRECIPE__\r\n";
$body .= "Content-Type: text/plain; charset=\"ISO-2022-JP\"\r\n";
$body .= "\r\n";
$body .= $mailMessage . "\r\n";
$body .= "--__PHPRECIPE__\r\n";
 
// 添付ファイルへの処理をします。
$handle = fopen($fileName, 'r');
$attachFile = fread($handle, filesize($fileName));
fclose($handle);
$attachEncode = base64_encode($attachFile);
 
$body .= "Content-Type: image/jpeg; name=\"$file\r\n";
$body .= "Content-Transfer-Encoding: base64\r\n";
$body .= "Content-Disposition: attachment; filename=\"$file\"\r\n";
$body .= "\r\n";
$body .= chunk_split($attachEncode) . "\r\n";
$body .= "--__PHPRECIPE__--\r\n";
 
// メールの送信と結果の判定をします。セーフモードがOnの場合は第5引数が使えません。
if (ini_get('safe_mode')) {
 $result = mb_send_mail($mailTo, $mailSubject, $body, $header);
} else {
 $result = mb_send_mail($mailTo, $mailSubject, $body, $header,'-f' . $returnMail);
}
 
if($result){
	echo '<p>送信成功</p>';
}else{
	echo '<p>送信失敗</p>';
}
 
?>

inserted by FC2 system