2016-09-19 1 views
0

から完全なエラーメッセージを取得します。私は、SMTPメールを送信するためにphpmailerのクラスを使用していますが、私はMySQLのテーブルにPHPmailerExceptionからログを追跡する必要があり、phpmailerの例外

コード:

$mail = new PHPMailer(true); 
    try { 
    $mail->Host =$dmmodel->host; 
    $mail->Username= $dmmodel->username; 
    $mail->Password= $dmmodel->password; 
    $mail->Mailer='smtp'; 
    $mail->Port=$dmmodel->port; 
    $mail->SMTPAuth = true; 
    $mail->SMTPSecure = ($dmmodel->smtp_enableSSL==1?'ssl':($dmmodel->smtp_enableSSL==2 ? 'tls':'')); 
    $mail->SMTPDebug = 2; 
    $mail->From = $dmmodel->email_from; 
    $mail->FromName = $dmmodel->name_from; 
    $mail->Subject = $this->getContentBody($docmodel->content_subject,$docmodel->crm_base_contact_id,$_POST["taskid"],$postcode,$recall_by,$recall_dt,true); 
    $mail->AddAddress($email[$i]); 
    $mail->IsHTML(true); 
} 
    catch (phpmailerException $e) 
    { 
     $msg = "Email Delivery failed -" . $e->errorMessage(); 
     echo "Email not sent"; 
    } 

ここで、$ msg変数にはメッセージのみが含まれています。「SMTPエラー:認証できませんでした」 この問題の原因が完全に表示されています(下記参照)

SMTP - >サーバーから:220 smtp.gmail.com ESMTP n3sm27565307paf.13 - gsmtp
SMTP - >サーバーから:250-smtp.gmail.comあなたのサービスで、[122.164.189.101] 250-SIZE 35882577 250-8BITMIME 250-AUTH LOGIN PLAIN XOAUTH2 PLAIN-CLIENTTOKEN OAUTHBEARER XOAUTH 250-ENHANCEDSTATUSCODES 250-PIPELINING 250-CHUNKING 250 SMTPUTF8
SMTP - > ERROR:パスワードがサーバから受け入れられない:535-5.7.8ユーザー名パスワードは受け入れられません。 250 2.1.5フラッシュさn3sm27565307paf.13 - 私は上記のメッセージを保存することができますどのように

を送信されませんgsmtp
電子メール: - gsmtp
SMTP - >サーバーから 535 5.7.8 https://support.google.com/mail/?p=BadCredentials n3sm27565307paf.13で詳細をご覧ください変数 ?誰も私がこの完全なメッセージに

+0

check http://stackoverflow.com/questions/27122711/phpmailer-debug-output-to-html-variableおよびhttps://github.com/PHPMailer/PHPMailer/blob/master/docs/Note_for_SMTP_debugging.txt – ADev

+0

これらのノートを更新して、これをより明確にしました。これを行う方法は、独自のDebugoutputハンドラを挿入してすべてのメッセージをキャプチャすることです。 – Synchro

答えて

2

を取得することができますしてください、あなたは試すことができます:

この1:

$mail->SMTPDEbug = 4;

代わりの

$mail->SMTPDebug = 2;

また、あなたが得ることができますメソッドのエラーに関する詳細情報

$mail->ErrorInfo。例えば

if(!$mail->send()) { 
    echo 'Message could not be sent.'; 
    echo 'Mailer Error: ' . $mail->ErrorInfo; 
} else { 
    echo 'Message has been sent'; 
} 

これは、あなたが新しいphpmailerの(真)でアクティブに必要な例外モデルに代わるものです。