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接続の証明書の検証で「SMTPホストに接続できませんでした。」などといったエラーが出ることがあります。 この場合、以下のように SMTPOptions を設定することで検証を回避することが可能です。
$mail->SMTPOptions = [ 'ssl' => [ 'verify_peer' => false, 'verify_peer_name' => false, 'allow_self_signed' => true ] ];