勉強したことのメモ

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

  関連記事

メールサーバーを構築せずにGmailのSMPTを使ってPHPでメール送信

メールサーバーが立てられなかったり、無料サーバーのため使えなかったりといった場合 ...

PHPMailerでメールを送信する際にTLS / SSL暗号化させる方法

PHPMailerでメールを送信したところGmailで確認すると赤い鍵のようなア ...

SendGridを使ってメールサーバを構築せずにPHPからメールを送信する方法

メールサーバを構築せずに独自ドメインのメールアドレスにてメール送信を行いたい。過 ...

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

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

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

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