プログラミングナレッジKnowledgeSide

2016.06.20

PHPで自動返信メール機能付きのコンタクトフォームを作成する(送信画面)

Pocket

前回、前々回と3回にわたり紹介してきましたPHPでのコンタクトフォーム作成ですが、今回は最後となる送信画面を作成していきます。確認画面から引き継いだSESSION変数をメールで送信し、送信完了のメッセージを表示させます。

 

(過去の記事はこちら)

・PHPで自動返信メール機能付きのコンタクトフォームを作成する(入力画面)

・PHPで自動返信メール機能付きのコンタクトフォームを作成する(確認画面)

 

コンタクトフォームの送信画面

画面自体は入力画面や確認画面と同じようにHTMLで作成し、メール送信部分はPHPで作成していきます。また自動返信メールの本文もこちらで設定します。

 

【send.php】※一部抜粋

<?php  
session_start();
if(!$_SESSION){
  header('Location: ./form.php');
}
$add_header ="From:info@example.com\n";
$add_header .= "Reply-to: info@example.com\n";
$add_header .= "X-Mailer: PHP/". phpversion();
//自動返信メール本文
$messageuser = sprintf("%s",$_SESSION['name']);
$messageuser .= " 様\n\n";
$messageuser .= "この度はお問い合わせいただき誠にありがとうございます。\n\n";
$messageuser .= "下記の内容でお問い合わせを承りました。\n\n\n";
$messageuser .= "================================\n\n";
$messageuser .= sprintf("お名前:%s\n",$_SESSION['name']);
$messageuser .= sprintf("メールアドレス:%s\n",$_SESSION['email']);
$messageuser .= sprintf("電話番号:%s\n",$_SESSION['tel']);
$messageuser .= sprintf("URL:%s\n",$_SESSION['url']);
$messageuser .= sprintf("性別:%s\n",$_SESSION['sex']);
$messageuser .= sprintf("お住まいのエリア:%s\n",$_SESSION['location']);
$messageuser .= sprintf("お問い合わせ項目:\n");
$messageuser .= implode(",",$_SESSION['check']);
$messageuser .= "\n\n";
$messageuser .= sprintf("件名:%s\n",$_SESSION['subject']);
$messageuser .= sprintf("お問い合わせ内容:%s\n",$_SESSION['message']);
$messageuser .= "================================\n\n";
//管理者確認用メール本文
$messageadmin = "コンタクトフォームより下記の内容でお問い合わせがありました。\n\n\n";
$messageadmin .= "================================\n\n";
$messageadmin .= sprintf("お名前:%s\n",$_SESSION['name']);
$messageadmin .= sprintf("メールアドレス:%s\n",$_SESSION['email']);
$messageadmin .= sprintf("電話番号:%s\n",$_SESSION['tel']);
$messageadmin .= sprintf("URL:%s\n",$_SESSION['url']);
$messageadmin .= sprintf("性別:%s\n",$_SESSION['sex']);
$messageadmin .= sprintf("お住まいのエリア:%s\n",$_SESSION['location']);
$messageadmin .= sprintf("お問い合わせ項目:\n");
$messageadmin .= implode(",",$_SESSION['check']);
$messageadmin .= "\n\n";
$messageadmin .= sprintf("件名:%s\n",$_SESSION['subject']);
$messageadmin .= sprintf("お問い合わせ内容:%s\n",$_SESSION['message']);
$messageadmin .= "================================\n\n";
//メール設定
mb_language("ja");
mb_internal_encoding("UTF-8");
//自動返信メール送信設定
mb_send_mail($_SESSION['email'],"【コンタクトフォーム】お問い合わせありがとうございます",$messageuser,$add_header);
//管理者確認用メール送信設定
mb_send_mail("info@example.com","コンタクトフォームよりお問い合わせがありました",$messageadmin,$add_header);
session_destroy();
?>

〜 一部省略 〜

<div>
  <p>お問い合わせありがとうございます。メッセージの送信が完了しました。
  </p>
  <p>担当者から返信させていただきますので、今しばらくお待ちくださいませ。
  </p>
</div>

 

PHP部分にはメール送信に関する処理を行います。まずはsession_start()でセッションを開始します。次に確認画面以外からのアクセスした場合に入力画面へ遷移させるリダイレクトを設定します。そして$add_header変数にはメールヘッダ情報が入ります。

 

次に自動返信メールの本文を作成します。メール本文は$messageuser変数に入れていきます。複数行にまたぐ場合は、連結演算子(.=)で行を繋いでいきます。文字列はそのまま変数に代入しますが、SESSION変数の値を表示させる部分にはsprintf()を使い、文字列の中にSESSION変数を「%s」として扱います。

 

ただし、複数選択については情報を配列で扱っているので、implode()で配列を連結させた文字列として取り出します。第一引数にコンマを指定することで項目をコンマ区切りで表示できます。

 

そして同じように管理者確認用のメール本文も作成します。こちらは$messageadminの変数に入ります。

 

最後にメール設定で文字コードの指定と、自動返信メールと管理者確認用メールの送信設定を行います。送信設定にはmb_send_mail()を使います。この第一引数には「送信先メールアドレス」、第二引数には「メール本文」、第三引数には「メールヘッダ情報」を指定します。

 

最後にsession_destroy()でセッションを終了します。

 

 

以上でコンタクトフォームの送信画面は完成です。
入力画面、確認画面と合わせてPHPのコンタクトフォームについてまとめてきました。一見すると複雑ですが、一つひとつの画面の役割と流れ、そして処理を理解すればイメージしやすいと思います。

 

Pocket

>>記事一覧に戻る