Web制作

自作LPにphpメールで作った自作フォームを設置する

PHPメーラーとは、PHPでメールを送信するためのライブラリの一つ。PHPMailerは、メール送信のための機能を豊富に提供しており、SMTP認証やHTMLメール、ファイル添付などが可能だ。


phpメーラーを使うメリット

PHPMailerのメリットは多岐に渡りますが、特に以下の3点が挙げられる。

  1. 安全性: PHPMailerはセキュリティ対策が施されています。これにより、メールヘッダインジェクションやXSS(クロスサイトスクリプティング)といった攻撃から守られる。
  2. 柔軟性: PHPMailerは、テキストメールだけでなくHTMLメールの作成も可能。また、添付ファイルやインライン画像の送信も可能で、メール作成の幅を広げることもできる。
  3. SMTPサポート: PHPMailerはSMTPを介したメール送信をサポートしている。これにより、メールサーバ経由でのメール送信が可能となり、より確実にメールを送ることができる。

自作LPにphpメーラーを使ったフォームを実装する方法(概要)

まず、PHPMailerを使ったフォームの実装方法の大まかな流れを説明。

  1. 事前準備: PHPMailerライブラリをダウンロードし、ディレクトリに配置。
  2. 問い合わせフォームの作成: HTMLとCSSを使って、ユーザが情報を入力できるフォームを作成。
  3. 確認ページの作成: 入力された情報を表示し、ユーザに確認。ユーザが入力した情報をPHPのセッションに保存。
  4. 完了ページの作成: PHPMailerを使ってメールを送信し、送信完了の旨をユーザに通知します。

事前準備:phpメーラーライブラリのダウンロードと、ディレクトリにデータを配置

PHPMailerを導入するために、まずPHPMailerライブラリをダウンロードしておく必要がある。
Composerを使ってインストールすることを推奨。

composer require phpmailer/phpmailer

このコマンドによって、vendorディレクトリが作成され、PHPMailerライブラリがインストールされ、これで、PHPMailerを使ってメール送信が可能になります


問い合わせフォームの実装

まず、HTMLとCSSを使って、問い合わせフォームを作成する。以下は、index.phpに配置する問い合わせフォームの例。

<!DOCTYPE html>
<html lang="ja">
<head>
  <meta charset="UTF-8">
  <title>問い合わせフォーム</title>
</head>
<body>
 <h1>問い合わせフォーム</h1>
 <form action="confirm.php" method="post">
 <label for="name">名前</label>
 <input type="text" id="name" name="name" required>
 <br>
 <label for="email">メールアドレス</label>
 <input type="email" id="email" name="email" required>
 <br>
 <label for="message">メッセージ</label>
 <textarea id="message" name="message" rows="4" cols="50" required></textarea>
 <br>
 <input type="submit" value="確認画面へ">
 </form>
</body>
</html>

ここで、action属性に”confirm.php”を指定しているため、フォームが送信されると、入力された情報がconfirm.phpに渡される。


確認画面の実装

次に、確認画面。confirm.phpでは、ユーザーが入力した情報をセッションに保存し、確認画面を表示する。

まず、フォームから送信されたデータを受け取る。

<?php
session_start();

// POSTデータを受け取り、セッションに保存
$_SESSION['name'] = $_POST['name'];
$_SESSION['email'] = $_POST['email'];
$_SESSION['message'] = $_POST['message'];
?>

次に、受け取ったデータを表示する確認画面のHTMLを作成。

<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>確認画面</title>
</head>
<body>
<h1>確認画面</h1>
<p>名前: <?php echo htmlspecialchars($_SESSION['name'], ENT_QUOTES, 'UTF-8'); ?></p>
<p>メールアドレス: <?php echo htmlspecialchars($_SESSION['email'], ENT_QUOTES, 'UTF-8'); ?></p>
<p>メッセージ: <?php echo nl2br(htmlspecialchars($_SESSION['message'], ENT_QUOTES, 'UTF-8')); ?></p>

<form action="thanks.php" method="post">
<input type="submit" value="送信">
</form>
<form action="index.php" method="post">
<input type="submit" value="修正">
</form>
</body>
</html>

完了ページの実装

最後に、完了ページ。
thanks.phpでは、PHPMailerを使ってメールを送信し、送信完了の旨をユーザに通知する。まず、PHPMailerをインクルードして、メール送信の設定を実施する。

<?php
 session_start();
 require 'vendor/autoload.php';

 use PHPMailer\PHPMailer\PHPMailer;
 use PHPMailer\PHPMailer\Exception;

 $mail = new PHPMailer(true);

 try {
  // 送信設定
  $mail->isSMTP();
  $mail->Host = 'smtp.example.com';
  $mail->SMTPAuth = true;
  $mail->Username = 'your_email@example.com';
  $mail->Password = 'your_email_password';
  $mail->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS;
  $mail->Port = 587;

  // 送信元と送信先
  $mail->setFrom('your_email@example.com', '自作LP');
  $mail->addAddress($_SESSION['email'], $_SESSION['name']);

  // 件名と本文
  $mail->Subject = 'お問い合わせありがとうございます';
  $mail->Body = "以下の内容でお問い合わせを受け付けました。\n\n"
  . "名前: " . $_SESSION['name'] . "\n"
  . "メールアドレス: " . $_SESSION['email'] . "\n"
  . "メッセージ:\n" . $_SESSION['message'];

  // メール送信
  $mail->send();
} catch (Exception $e) {
  echo "メッセージの送信に失敗しました: {$mail->ErrorInfo}";
 exit;
}

// セッションをクリア
session_destroy();
?>

<!DOCTYPE html>
<html lang="ja">
 <head>
  <meta charset="UTF-8">
  <title>送信完了</title>
 </head>
<body>
  <h1>送信完了</h1>
  <p>お問い合わせありがとうございました。メールを送信しました。</p>
  <p><a href="/">トップページに戻る</a></p>
 </body>
</html>

これで、メールの送信が完了したことを通知する完了ページが実装できました。ちゃんちゃん

 

TOP