目次

PHPMailer

インストール

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
    ]
];