メールフォーム設定方法

PHPメールフォームは、Web HTMLフォーム(お問い合わせフォームなど)によって送信されたデータをメールの受信トレイに送信するためのシンプルで使いやすいPHPスクリプトです。ライブラリはBootstrapMadeチームによって作成され、BootstrapMade.com で公開されているテンプレートの有料版で利用できます。テンプレートに含まれているお問い合わせフォームを使用して、箱から出してすぐに機能します。

目次

  1. PHP メールフォームを連絡先フォームとして設定する
  2. 複数の受信用メールアドレスの追加
  3. スパム対策
  4. フォームに添付ファイルを追加する
  5. フォームに「利用規約/プライバシーポリシーに同意する」チェックボックスを追加する
  6. PHPメールフォームの高度な使用法とカスタマイズ
  7. エラー・メッセージのカスタマイズ
  8. 必要条件

1. PHPメールフォームをお問い合わせフォームとして設定する

すべてのテンプレートでお問い合わせフォームを提供しています。PHPメールフォームは、お問い合わせフォームですぐに機能します。ホスティングでPHPをサポートしている場合は、受信用メールアドレスを構成する必要があります。

  1. すでに無料版のテンプレートで作業を開始している場合:メンバーエリアからプロ版をダウンロードし、解凍して、作業プロジェクトの/assets/vendor/php-email-form/php-email-form.php/assets/vendor/php-email-form/フォルダにコピーします。
  2. /forms/contact.php を編集し、contact@example.com をあなたのメールアドレスに置き換えれば完了です。

PHP メールフォームは、デフォルトでメール送信に PHP の mail() 関数を使用します。/forms/contact.php には、ホスティングが PHP の mail() 関数を使用した電子メールの送信を許可していない場合に備えて、SMTP の設定も付属しています。SMTP 構成はコメント化されています。SMTP設定行のコメントを解除し、資格情報を追加する必要があります。

2. 複数の受信用メールアドレスを追加する

また、送信されたフォームに複数の受信用メールアドレスをccおよびbccメソッドで追加することもできます。以下のコードを編集して、行の直前
に追加しますforms/contact.phpecho $contact->send();

$contact->cc = array('ccreceiver1@example.com', 'ccreceiver2@example.com');
$contact->bcc = array('bccreceiver1@example.com', 'bccreceiver2@example.com');

3.スパム保護

デフォルトでは、ほとんどのスパムボットを停止させるAJAX形式のフォーム送信方法を使用しています。以下の2つの方法を使用して、フォームにスパム保護を追加できます。

1.ハニーポット方式
によるスパム保護 ハニーポット方式は、スパム保護の非常に巧妙な方法です。フォームにフィールドを追加するだけで、そのフィールドはユーザーに対して非表示になり、送信中に入力されません。スパムボットは、それが標準の必須フィールドであると考えてそれを埋め、その活動を私たちに警告します。ハニーポットフィールドが入力されている場合は、自信を持ってフォームをスパムとして拒否できます。ハニーポット方式を使用するには:

まず、フォームを編集し、次のようなフィールドを追加します。

<div class="form-group d-none">
<input type="text" class="form-control" name="first_name">
<div class="validate"></div>
</div>

次に、/forms/contact.php を編集し、行の直前に以下のコードを追加しますecho $contact->send();

$contact->honeypot = $_POST['first_name'];

ファイルネームはfirst_nameお好みで変更できます。

2. Google reCaptchaによるスパム保護
Google reCaptchaは、世界で最も人気のあるフォーム送信保護です。PHPメールフォームには、Google reCaptchaの最新バージョン3.0のサポートが組み込まれています。以下の手順に従って、フォームのGooglereCaptcha保護を有効にします。

1. Google reCapthca管理Webサイトにアクセスし、Webサイトをセットアップして、キー(サイトキーとシークレットキー)を取得します

2.以下の行を、他のスクリプトインクルードとともにフッター部分のWebページに追加します。

<script src="https://www.google.com/recaptcha/api.js?render=Your_reCAPTCHA_site_key"></script>

Your_reCAPTCHA_site_key を手順 1 で取得したサイト キーに置き換えます

3. フォームタグに次のように追加します。data-recaptcha-site-key

<form action="forms/contact.php" method="post" role="form" class="php-email-form" data-recaptcha-site-key="Your_reCAPTCHA_site_key">

Your_reCAPTCHA_site_key を手順 1 で取得したサイト キーに置き換えます

4. を編集し、以下のコードを行の直前に追加します/forms/contact.phpecho $contact->send();

$contact->recaptcha_secret_key = 'Your_reCAPTCHA_secret_key';

Your_reCAPTCHA_secret_key をステップ 1 で取得したシークレット キーに置き換えます

これで完了です。これで、フォームはGoogle reCaptchaサービスで保護されます。

4. フォームに添付ファイルを追加する

また、ファイルのアップロードをフォームに追加することもできます。ユーザーが送信したファイルがメールの添付ファイルとして届きます。

1. フォームにファイルファイルを追加します。

<div class="form-group mt-3">
  <input class="form-control" type="file" name="resume">
</div>

2. を編集し、以下のコードを行の直前に追加します/forms/contact.phpecho $contact->send();

$contact->add_attachment('resume', 20, array('pdf', 'doc', 'docx', 'rtf'));

add_attachmentメソッドの最初の値 (resume) は、ステップ 1 で設定したファイルフィールドの名前です。

2 番目の値 (20) は、最大許容ファイル サイズ (MB 単位) です

3 番目の値 array( (‘pdf’, ‘doc’, ‘docx’, ‘rtf’) は、許可されたファイル拡張子の配列です

5. フォームに「利用規約/プライバシーポリシーに同意する」チェックボックスを追加する

以下は、フォームにチェックボックスを追加し、フォームを送信する前にユーザーに利用規約またはプライバシーポリシーへの同意を求める必要がある場合のコード例です。

まず、フォームの送信ボタンの直前に、以下のコードを追加します。

<div class="form-check form-group ps-0">
  <input id="privacy-policy" type="checkbox" name="privacy" value="accept" required>
  <label class="form-check-label ps-1" for="privacy-policy">
    Accept our <a href="terms.html">terms of service</a> and <a href="privacy.html">privacy policy</a>
  </label>
</div>

 
次に、 を編集し、次のコードを行の直前に追加します/forms/contact.phpecho $contact->send();

if($_POST['privacy'] !='accept') {
 die('Please, accept our terms of service and privacy acy policy');
}

6 PHPメールフォームの高度な使用法とカスタマイズ

PHPメールフォームは、無制限のカスタム入力を持つ任意のフォームをメールで送信するためにも使用できます。また、ローカルメールサーバーなしでメールを送信できる統合SMTPサポートも付属しています。

フォーム/contact.phpを新しいファイルに複製して、それを出発点として使用することができます(例:myform.php
また、新しいフォームのactionプロパティを新しく作成されたmyform.phpに設定する必要があります。
<form action="forms/myform.php" method="post" class="php-email-form">

以下は、フォーム/contact.phpの各行の完全なドキュメントと、それらをニーズに合わせてカスタマイズする方法です。まず、以下はcontact.phpの全内容です。詳細な説明については、下にスクロールしてください。

<?php
/**
* Requires the "PHP Email Form" library
* The "PHP Email Form" library is available only in the pro version of the template
* The library should be uploaded to: vendor/php-email-form/php-email-form.php
* For more info and help: https://bootstrapmade.com/php-email-form/
*/

// Replace contact@example.com with your real receiving email address
$receiving_email_address = 'contact@example.com';

if( file_exists($php_email_form = '../assets/vendor/php-email-form/php-email-form.php' )) {
include( $php_email_form );
} else {
die( 'Unable to load the "PHP Email Form" Library!');
}

$contact = new PHP_Email_Form;
$contact->ajax = true;

$contact->to = $receiving_email_address;
$contact->from_name = $_POST['name'];
$contact->from_email = $_POST['email'];
$contact->subject = $_POST['subject'];

// Uncomment below code if you want to use SMTP to send emails. You need to enter your correct SMTP credentials
/*
$contact->smtp = array(
'host' => 'example.com',
'username' => 'example',
'password' => 'pass',
'port' => '587'
);
*/

$contact->add_message( $_POST['name'], 'From');
$contact->add_message( $_POST['email'], 'Email');
$contact->add_message( $_POST['message'], 'Message', 10);

echo $contact->send();
?>
// Replace contact@example.com with your real receiving email address
$receiving_email_address = 'contact@example.com';

ここでは、受信メールアドレス変数を設定しますが、これは後でPHPメールフォームクラスのプロパティを設定するときに使用します。この方法で行う必要はありませんが、デフォルトのお問い合わせフォームの編集が必要な唯一の構成設定であるため、この構成をcontact.phpの上部に移動しただけです。

if( file_exists($php_email_form = '../assets/vendor/php-email-form/php-email-form.php' )) {
include( $php_email_form );
} else {
die( 'Unable to load the "PHP Email Form" Library!');
}

ここでは、PHPメールフォームライブラリが存在するかどうかを確認し、それを含めます。ライブラリ ファイルが存在しない場合php-email-form.phpスクリプトは実行を終了します。

$contact = new PHP_Email_Form;

ここでは、PHPメールフォームを開始し、それを変数$contactに割り当てます。$contactを自分のものに変更することができます。

$contact->ajax = true;

お問い合わせフォームにフォームを投稿するAJAXメソッドを使用します。この設定は、post メソッドが本当に AJAX 呼び出しから来ているかどうかをチェックし、そうでない場合はエラーを出力します。このプロパティは、デフォルトでは false ですajax

$contact->to = $receiving_email_address;
$contact->from_name = $_POST['name'];
$contact->from_email = $_POST['email'];
$contact->subject = $_POST['subject'];

これら4つのプロパティのすべてが必要であり、設定する必要があります。tofrom_namefrom_emailsubject

プロパティは、フォームの受信用メールアドレスです。ここから直接設定することも、$receiving_email_address変数を使用することもできます。to$contact->to = 'contact@example.com';

プロパティは、電子メールの送信者名です。お問い合わせフォームでは、「name」という名前の入力値をキャプチャします。ここから直接、または別の名前の他の入力値として設定できます。from_name$contact->from_name = 'Custom Name';$contact->from_name = $_POST['sender_name'];

プロパティは送信者の電子メール アドレスです。お問い合わせフォームでは、「email」という名前の入力値をキャプチャします。ここから直接、または別の名前の他の入力値として設定できます。from_email$contact->from_email = 'custom@email.com';$contact->from_email = $_POST['email_address'];

プロパティは電子メールの件名です。お問い合わせフォームでは、「subject」という名前の入力値をキャプチャします。ここから直接、または別の名前の他の入力値として設定できます。subject$contact->subject = 'My Subject';$contact->subject = $_POST['form_subject'];

// Uncomment below code if you want to use SMTP to send emails. You need to enter your correct SMTP credentials
/*
$contact->smtp = array(
'host' => 'example.com',
'username' => 'example',
'password' => 'pass',
'port' => '587'
);
*/

PHP メールフォームは、デフォルトでメール送信に PHP の mail() 関数を使用します。ホスティングがPHPのmail()関数をサポートしていない場合、またはSMPTを優先できる場合は、SMTPを使用できます。SMTPを使用するには、上記のコードのコメントを解除して資格情報を追加するだけです。

$contact->add_message( $_POST['name'], 'From');
$contact->add_message( $_POST['email'], 'Email');
$contact->add_message( $_POST['message'], 'Message', 10);

ここでは、PHPメールフォームの一部であるメソッドを使用して、メール本文に含まれるメッセージコンテンツを準備して構成します。それはあなたのニーズに基づいて無制限に使用することができます。ご覧の通り、私たちのcontact.phpでは3回使用しています。メールで受信する形式のメッセージは、次の例のようになります:
メール: 送信者名
差出人: sender@email.com
メッセージ: メッセージ テキストadd_message()

add_message()メソッドは3つのパラメータを受け入れます。最初のものはメッセージテキスト、2番目はタイトル/ラベル、3番目は長さチェック番号です(提供されたメッセージテキストの文字数が設定された長さを下回っている場合はエラーを出力します)。

echo $contact->send();

メールが正常に送信された場合は「OK」というテキストメッセージが出力され、何らかの理由でメールが送信されない場合はエラーメッセージが出力されます。

7. エラーメッセージのカスタマイズ

返されるエラーメッセージは、PHPメールフォームでカスタマイズすることもできます。使用可能なエラー メッセージのプロパティとその既定値を次に示します。

$contact->invalid_to_email = 'Email to (receiving email address) is empty or invalid!';
$contact->invalid_from_name' = 'From Name is empty!';
$contact->invalid_from_email' = 'Email from: is empty or invalid!';
$contact->invalid_subject' = 'Subject is too short or empty!';
$contact->short' = 'is too short or empty!'; // If the length check number is set and the provided message text is under the set length in the add_message() method call
$contact->ajax_error' = 'Sorry, the request should be an Ajax POST'; // If ajax property is set true and the post method is not an AJAX call

8. 必要条件

PHPメールフォームには、ホスティングサーバーに最後にPHPバージョン5.5が必要です。ホスティングでは、PHPのmail()関数を使用してメールを送信できるようにする必要があります。mail()関数がサポートされていない場合は、SMTPメソッドを使用できます。