PHPにはmail()関数がありますが、日本語のメール送信にはmb_send_mail()関数を使うのが便利でしょう。
mb_send_maail()関数を利用すると、php.iniの[mbstring]mbstring.languageやmb_language()関数で設定した言語に応じて、文字コード変換やエンコーディングをしてから、メールの送信をしてくれます。
論理値(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>'; } ?>