トップページ > ホームページ作成 > メール送信
PHPのmail関数を使って、メールを送信します。文字コードの変換もしてくれるmb_send_mailの使い方です。フォームから入力されたデータを送信する全体の流れは、SmartyでQuickFormその2のページで確認してください。
PHPの「mail()」を使う
「mb_send_mail()」は、エンコード変換を行ってメールを送信してくれます。「mail() 」のラッパ関数になります。レンタルサーバーの「ロリポップ」では、「mail() 」よりもセキュリティに優れた「qmail」に置き換えているようですが、「mb_send_mail()」の関数で動作します。
「mb_send_mail()」の例
次のサンプルリストの例を見てください。後で、説明します。
<?php
//設定
define("MAIL_TO","*********@**.**.**"); //送信先メールアドレスを定義
・・・・
・・・・
$vals = $qfrmindex -> getVals();//フォームの入力結果を格納
$com = mail_submit($vals); //メール送信
・・・・
・・・・
//メール送信 関数
function mail_submit($t_name){
mb_language('ja');//e-mailメッセージを"ja"にエンコー ディング
mb_internal_encoding("UTF-8");//内部文字エンコーディングは"UTF-8"
$m_name = $t_name["txtName"]; //差出人
$m_to = MAIL_TO; //あて先
$m_subject =$t_name["txtTitle"] ;//タイトル
$m_from = $t_name["txtEmail"]; //送信者
$m_comm = $t_name["txtrComment"]; //コメント
//内容の前に名前やメールアドレスを追加
$mail_temp = "名前 :";
$mail_temp .= $m_name;
$mail_temp .= "\nメールアドレス:";
$mail_temp .= $m_from;
$mail_temp .= "\nタイトル :";
$mail_temp .= $m_subject;
$mail_temp .= "\n内容 :";
$mail_temp .= $m_comm;
$mail_temp = wordwrap($mail_temp, 70); //1行70文字以上対策
$rc = mb_send_mail($m_to,$m_subject,$mail_temp,"From:$m_from");
if ($rc){
$com = "入力ありがとうございました。"; //送信成功
}else{
$com = "メールが送信できませんでした。";//送信失敗
}
return $com;
}
?>
「mb_send_mail($m_to,$m_subject,$mail_temp,"From:$m_from")」は、メールを送信する関数です。以下のデータをセットします。
- $m_to:送信先メールアドレス複。数指定可能。
- $m_subject:メールのタイトル。 改行を含んではいけない。
- $mail_temp:メールの本文。各行は 70 文字を超えては いけない。
- "From:$m_from":送信者。Fromヘッダは、必須。
「mb_language('ja')」は、送信メールを日本語に指定しています。「mb_internal_encoding("UTF-8")」は、データを入力したホームページの文字コードです。私の場合、UTF-8です。これだけで、メール送信時の文字化けが防げます。
「wordwrap($mail_temp, 70)」は、一行70文字対策です。70文字で改行してくれます。
このサンプルリストを実行したメール受信画面のサンプルは、SmartyでQuickFormその2の画面の下のほうで確認できます。レンタルサーバーの「ロリポップ」では、動作確認しております。
Amazon.co.jpアソシエイト:PHP&プログラミング
:%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0%20php :php2_ :3