====== PHPMailer ======
* [[https://github.com/PHPMailer/PHPMailer|GitHub]]
* [[https://phpmailer.github.io/PHPMailer/classes/PHPMailer.PHPMailer.PHPMailer.html|ドキュメント]]
===== インストール =====
Composer を使ってインストールします。\\
([[サーバ:各種インストール・設定:composer|Composerのインストール方法]])
# 以下を実行するだけ
composer require phpmailer/phpmailer
# composer のパスが通っていない場合は composer.phar のあるディレクトリで以下を実行
php composer.phar require phpmailer/phpmailer
# phpのバージョンが低いと言われる場合は、サーバのコンパネなどから、新しいPHPのパスを調べ以下のように実行
/usr/bin/phpX.X composer.phar require phpmailer/phpmailer
===== 使い方 =====
define('MAIL_DEBUG', false);
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;
// true を渡すと例外処理が有効になる
$mail = new PHPMailer(true);
if (MAIL_DEBUG) {
// デバッグ用
$mail->SMTPDebug = 3;
$mail->Debugoutput = 'error_log'; // echo | html | error_log
}
try {
$mail->isSMTP();
$mail->Host = 'XXX.XXX.XXX'; // SMTPサーバを指定
$mail->Port = 587; // ポート
$mail->SMTPAuth = true; // SMTP認証
$mail->SMTPSecure = 'tls'; // 認証の種類(465:ssl、587:tls)
$mail->AuthType = 'LOGIN'; // 認証タイプ
$mail->Username = 'XXXX'; // 認証ユーザ
$mail->Password = 'XXXXXXXXX'; // 認証パスワード
// メール内容設定
$mail->CharSet = 'UTF-8';
$mail->Encoding = 'base64';
$mail->setFrom($mail_from);
$mail->addAddress($mail_to_01);
$mail->addReplyTo($reply_to);
$mail->Subject = $mail_subject_01;
$mail->Body = $mail_body_01;
$mail->send();
// 宛先のアドレスをクリア
$mail->clearAddresses();
// 返信先のクリア
$mail->clearReplyTos();
$mail->addAddress($mail_to_02);
$mail->Subject = $mail_subject_02;
$mail->Body = $mail_body_02;
$mail->send();
} catch (Exception $e) {
echo "Message could not be sent. Mailer Error: {$mail->ErrorInfo}";
}
===== SSL証明書の検証エラー =====
自己署名証明書を使っている場合、SSL接続の証明書の検証で「SMTPホストに接続できませんでした。」などといったエラーが出ることがあります。
この場合、以下のように SMTPOptions を設定することで検証を回避することが可能です。
$mail->SMTPOptions = [
'ssl' => [
'verify_peer' => false,
'verify_peer_name' => false,
'allow_self_signed' => true
]
];