勉強したことのメモ

Webエンジニア / プログラマが勉強したことのメモ。

PHPMailerでエラーメッセージ及びデバッグログの表示方法について

  PHP

PHPMailerでエラーメッセージ及びデバッグログを表示させたいというケースがあった。また、テスト環境だとエラーメッセージ及びデバッグログをそのまま画面に表示すれば良いが、本番環境だとそうもいかないのでこの場合はログとして出力させたい。以下に対応方法のメモ。

 

対応方法

エラーメッセージ

if( $mail->ErrorInfo ){
    #そのまま出力させる場合
    echo $mail->ErrorInfo;

    #ログに出力させる場合
    error_log($mail->ErrorInfo, 3, '/root/path/error.log');
}

デバッグログ

$mail->SMTPDebug = 2;

#そのまま出力させる場合
$mail->Debugoutput = function($str, $level) {echo "debug level $level; message: $str<br>";};

#ログに出力させる場合
$mail->Debugoutput = function($str, $level){
    error_log("debug level $level; message: $str", 3, '/root/path/error.log');
};

SMTPDebug部分がデバッグのレベルになり、詳細は公式ページに記載されている。以下翻訳後の内容になる。

0 -> デバッグを無効にします

1 -> クライアントから送信された出力メッセージ

2 -> 1に加えて、サーバーから受信した応答を追加します(これが最も便利な設定です)

3 -> 2に加えて、初期接続に関する詳細情報(このレベルは、STARTTLS 障害の診断に役立ちます)

4 -> 3に加えて、さらに低レベルの情報が含まれます。

 - PHP

  関連記事

PHPMailerを使ってメールをSMTP送信する方法(Composer無し)

PHPでメールをSMTP送信したかった。また、レンタルサーバだったのでCompo ...

PHPMailerでエラーメッセージを日本語で出力する方法

PHPMailerのGitHubページを見ていると言語設定についての案内を見つけ ...

【2024年版】PHPMailerでGmailのSMTPサーバを経由してメールを送信する方法

だいぶ前に同じようなことをメモしたが、そちらの方法だと送信できずエラー内容を見た ...

PHPでメール送信時に返信先(Reply-To)を指定する方法

PHPにてメールを送信し、そのメールに対して返信しようとすると通常は送信元のメー ...

PHPでファイルを添付してメールを送信する方法(PHPMailer)

PHPでファイルを添付の上、メールを送信したかった。方法を探したところphpma ...