IT

フォームの自動返信機能をPHPMailerを使って簡単に作る【6.0系】

フォームの自動返信機能をつけるにはいろいろな方法がありますが、自作するにはPHPMailerを使うと簡単に作ることができます。

  • PHPMailerをGitからダウンロードしてサーバーへアップロードする
  • メール返信のPHPファイルを作成し設置する

レンタルサーバーの環境によって動作しない場合もあるので、ステップをふむことでスムーズに設置できます。

PHPMailerをダウンロードする

Githubから最新版をダウンロードしましょう。

最新版を検索するには「PHPMailer」とGoogleに入力して検索します。

こちらからGithubに移動できます。

>> Github-PHPMailer ダウンロード

ダウンロードは右上にある緑色のボタンから、「Download ZIP」をクリックしてダウンロードします。

ダウンロードしたファイルはすべてサーバーへアップロードします。フォルダごとで構いません。

場所は自分の好きなところで問題ありません。

フォルダのパスは、後で必要になるのでどこかにメモしておくと楽になります。

PHPMailerを使った自動返信機能のコード

PHPMailerを使った自動返信のコードは次の通りです。

手動でPHPMailerをサーバーへ設置した場合にのみ動作します。

ターミナルなどからコマンドで設置した場合はコードが異なるので動作しません。その際は、GithubのSampleコードをご確認ください。

<?php
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;

//パスはPHPMailerを保存した先へ変更する
require ‘path/to/PHPMailer/src/Exception.php’;
require ‘path/to/PHPMailer/src/PHPMailer.php’;
require ‘path/to/PHPMailer/src/SMTP.php’;

$mail = new PHPMailer(true); // Passing `true` enables exceptions
try {
//Server settings
$mail->SMTPDebug = 2; // Enable verbose debug output
$mail->isSMTP(); // Set mailer to use SMTP
$mail->Host = ‘smtp1.example.com;smtp2.example.com’; // Specify main and backup SMTP servers
$mail->SMTPAuth = true; // Enable SMTP authentication
$mail->Username = ‘user@example.com’; // SMTP username
$mail->Password = ‘secret’; // SMTP password
$mail->SMTPSecure = ‘tls’; // Enable TLS encryption, `ssl` also accepted
$mail->Port = 587; // TCP port to connect to

//Recipients
$mail->setFrom(‘from@example.com’, ‘Mailer’);
$mail->addAddress(‘joe@example.net’, ‘Joe User’); // Add a recipient
$mail->addAddress(‘ellen@example.com’); // Name is optional
$mail->addReplyTo(‘info@example.com’, ‘Information’);
$mail->addCC(‘cc@example.com’);
$mail->addBCC(‘bcc@example.com’);

//Attachments
$mail->addAttachment(‘/var/tmp/file.tar.gz’); // Add attachments
$mail->addAttachment(‘/tmp/image.jpg’, ‘new.jpg’); // Optional name

//Content
$mail->isHTML(true); // Set email format to HTML
$mail->Subject = ‘Here is the subject’;
$mail->Body = ‘This is the HTML message body in bold!‘;
$mail->AltBody = ‘This is the body in plain text for non-HTML mail clients’;

$mail->send();
echo ‘Message has been sent’;
} catch (Exception $e) {
echo ‘Message could not be sent. Mailer Error: ‘, $mail->ErrorInfo;
}

※Githubより引用

PHPMailerのバージョンアップによりコードが変更になったのでつまづいた

PHPMailerのバージョンアップによりコードが若干ですが変更になったので、どうしたらいいかと検索、思考錯誤していました。

なんとかこれで、ボクが契約しているエックスサーバーでは動作しました。

動作環境

レンタルサーバー:エックスサーバー
OS:Linux
PHPバージョン:PHP7.0.30
ウェブサーバ:apache 2.4.x

こちらのサイトも参考にさせていただきました。
>>【PHP】PHPMailerでメールを送信する際に、6.0系からお作法が変わっていてつまづいた話