勉強したことのメモ

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 ...

PHPでHTMLメールを送信する方法(PHPMailerあり無しの2パターン)

PHPでHTMLメールを送信したい。また、メール関連の機能を実装する際は環境によ ...

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

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

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

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

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

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