PHPでメール送信フォームを作る方法
PHPでメール送信フォームを作る方法を紹介します。お名前・メールアドレス・お問い合わせ内容を入力し、メール送信できるシンプルなサンプルコードです。お問い合わせフォームや連絡フォームを自作したい場合や、PHPのメール送信機能を学びたい場合に活用できます。
コードについて
本記事のコードはサンプルコードです。ご利用前に必ず動作確認を行ってください。なお、PHPのmail関数はサーバー環境や設定によって正常に送信できない場合があります。
免責事項 本コードの利用により発生した損害について、当サイトは一切の責任を負いません。
免責事項 本コードの利用により発生した損害について、当サイトは一切の責任を負いません。
コードをコピーして使おう!
<?php
// 送信先メールアドレス
// ご自身の受信したいメールアドレスへ変更してください
$to = 'your-mail@example.com';
// エラーメッセージ
$errors = [];
// 送信完了メッセージ
$success = '';
// 入力値保持
$name = '';
$email = '';
$message = '';
// フォーム送信時
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
// 入力値取得
$name = trim($_POST['name'] ?? '');
$email = trim($_POST['email'] ?? '');
$message = trim($_POST['message'] ?? '');
// お名前チェック
if ($name === '') {
$errors[] = 'お名前を入力してください。';
}
// メールアドレスチェック
if ($email === '') {
$errors[] = 'メールアドレスを入力してください。';
} elseif (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
$errors[] = 'メールアドレスの形式が正しくありません。';
}
// お問い合わせ内容チェック
if ($message === '') {
$errors[] = 'お問い合わせ内容を入力してください。';
}
// エラーなし
if (empty($errors)) {
// メール件名
$subject = 'お問い合わせがありました';
// メール本文
$body =
"お名前:{$name}\n" .
"メールアドレス:{$email}\n\n" .
"お問い合わせ内容:\n{$message}\n";
// メールヘッダー
// サーバー環境によっては送信元メールアドレスの設定が必要になる場合があります
$headers = "From: {$to}\r\n";
$headers .= "Reply-To: {$email}\r\n";
// メール送信
if (mail($to, $subject, $body, $headers)) {
$success = 'お問い合わせ内容を送信しました。';
// フォーム初期化
$name = '';
$email = '';
$message = '';
} else {
$errors[] = 'メール送信に失敗しました。';
}
}
}
?>
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>メール送信フォーム</title>
<style>
.php-mail-form_wrap{
margin:0;
padding:30px;
font-family:sans-serif;
background:#fff;
}
.php-mail-form_box{
border:1px solid #e5e7eb;
border-radius:20px;
padding:24px;
background:#fff;
}
.php-mail-form_card{
max-width:600px;
margin:0 auto;
padding:24px;
border:1px solid #e5e7eb;
border-radius:18px;
background:#f8fafc;
}
.php-mail-form_title{
font-size:22px;
font-weight:700;
margin-bottom:20px;
}
.php-mail-form_field{
display:flex;
flex-direction:column;
gap:6px;
margin-bottom:14px;
}
.php-mail-form_label{
font-weight:700;
}
.php-mail-form_input,
.php-mail-form_textarea{
width:100%;
box-sizing:border-box;
padding:12px;
border:1px solid #d1d5db;
border-radius:10px;
font:inherit;
}
.php-mail-form_textarea{
min-height:130px;
resize:vertical;
}
.php-mail-form_error{
color:#dc2626;
font-size:13px;
font-weight:700;
margin-bottom:12px;
}
.php-mail-form_success{
padding:14px;
border-radius:12px;
border:1px solid #bbf7d0;
background:#f0fdf4;
color:#15803d;
font-weight:700;
margin-bottom:14px;
}
.php-mail-form_btn{
width:100%;
height:46px;
border:none;
border-radius:10px;
background:#0b6bff;
color:#fff;
font-weight:700;
cursor:pointer;
}
</style>
</head>
<body>
<div class="php-mail-form_wrap">
<div class="php-mail-form_box">
<div class="php-mail-form_card">
<div class="php-mail-form_title">
メール送信フォーム
</div>
<?php if ($success !== ''): ?>
<div class="php-mail-form_success">
<?= htmlspecialchars($success, ENT_QUOTES, 'UTF-8') ?>
</div>
<?php endif; ?>
<?php foreach ($errors as $error): ?>
<div class="php-mail-form_error">
<?= htmlspecialchars($error, ENT_QUOTES, 'UTF-8') ?>
</div>
<?php endforeach; ?>
<form method="post">
<div class="php-mail-form_field">
<label class="php-mail-form_label">お名前</label>
<input
class="php-mail-form_input"
type="text"
name="name"
value="<?= htmlspecialchars($name, ENT_QUOTES, 'UTF-8') ?>">
</div>
<div class="php-mail-form_field">
<label class="php-mail-form_label">メールアドレス</label>
<input
class="php-mail-form_input"
type="email"
name="email"
value="<?= htmlspecialchars($email, ENT_QUOTES, 'UTF-8') ?>">
</div>
<div class="php-mail-form_field">
<label class="php-mail-form_label">お問い合わせ内容</label>
<textarea class="php-mail-form_textarea" name="message"><?= htmlspecialchars($message, ENT_QUOTES, 'UTF-8') ?></textarea>
</div>
<button class="php-mail-form_btn" type="submit">
送信する
</button>
</form>
</div>
</div>
</div>
</body>
</html>
ファイル構成と設置方法
このサンプルでは、PHPファイルを1つだけ使用します。PHPファイルをサーバーへアップロードすると、そのままメール送信フォームとして利用できます。
sample/
└─ index.php
上記のPHPファイルをサーバーへアップロードしてください。
送信先メールアドレスは、PHPコード内の下記を修正してください。
$to = ‘your-mail@example.com’;
上記を、ご自身が受信したいメールアドレスへ変更してご利用ください。
また、PHPのmail関数はサーバー環境や設定によって正常にメール送信できない場合があります。送信できない場合は、サーバー側のメール設定や利用環境をご確認ください。
PHPファイルをダブルクリックしても動作しません。動作確認はレンタルサーバーまたはPHPが利用できるローカル環境で行ってください。
コメント