2017-12-16 2 views
1

Ich benutze PHPMailer, um E-Mails mit PHP zu senden. Die E-Mail wird gesendet, aber sie wird nicht im Posteingang/Spam oder irgendetwas empfangen. Es ist überraschend, dass es bis vor ein paar Tagen funktionierte. Ich habe es getestet und fast 500-600 E-Mails wurden gesendet und empfangen. Aber plötzlich hörte es auf zu arbeiten.PHP-Skript funktioniert nicht mit phpMailer

Hier ist mein PHP-Skript:

public static function mailTo($recipients) 
{ 
    $f3 = \Base::instance(); 
    $edit = $f3->get('editTrue'); 
    $user = AclHelper::getCurrentUser(); 
    $template= new \Template; 
    if(isset($edit)) 
    { 
     $mailBody = $template->render('leave/requestEdit.html'); 
    } 
    else 
    { 
     $mailBody= $template->render('leave/emailTemp.html'); 
    } 

    // When true, PHPMailer returns exceptions 
    $mail = new PHPMailer(true); 
    try { 
     $mail->isSMTP();          // Set mailer to use SMTP 
     $mail->isHTML(true); 

     $mail->addAddress($user['email']); 
     $mail->addAddress("[email protected]"); 

     // foreach($recipients as $recipient){ 
     //  $mail->addCC($recipient); 
     // } 

     $mail->SMTPAuth = true; // authentication enabled 
     $mail->SMTPSecure = 'ssl'; // secure transfer enabled REQUIRED for Gmail 
     $mail->Host = "smtp.gmail.com"; 
     $mail->Port = 465; // or 587 
     $mail->Username = "[email protected]"; 
     $mail->Password = "abcd"; 

     // $mail->Host = $f3->get('GBD.smtp.host'); // Specify main and backup SMTP servers 
     $mail->setFrom($user['email']); 

     $userFullName = trim(ucfirst($user['firstname'])) . " " . trim(ucfirst($user['lastname'])); 
     $mail->FromName = $userFullName; 
     $mail->Body = $f3->get('message'); 
     $mail->Body .="<br>". $mailBody; 

     if(isset($edit)) 
     { 
      $mail->AltBody = ''; 
     } 
     else 
     { 
      $mail->AltBody = 'Hello Team,<br>I would like to request leave for the leave dates specified as follows. 
     Application Date:' . $f3->get('issuedDate') . '<br>Leave requested from:' . $f3->get('leaveFrom') . '<br>Leave requested to:' . $f3->get('leaveTo') . '<br>Leave Description:' . $f3->get('leaveDescription') . 'Leave Type:' . $f3->get('leaveType').'<br><br>Hoping for a positive response.<br><br> Thank you.'; 
     } 

     $mail->Subject = 'Updates on leave date applied'; 

     $mailStatus = (boolean)$mail->send(); 

     if ($mailStatus === true) { 
      return $mail; 
     } 
    } catch (phpmailerException $e) { 
     $response = array(
      'status'=>'error', 
      'message'=>'Got some error while sending emails', 
      'exceptions'=>$e->getMessage() 
     ); 
     return $response; 

    } catch (Exception $e) { 
     $response = array(
      'status'=>'error', 
      'message'=>'Got some error while sending emails', 
      'exceptions'=>$e->getMessage() 
     ); 

     return $response; 
    } 
} 

ich aber eine Junk-E-Mail erhalten [nur ein], der sagt:

This sender failed our fraud detection checks and may not be who they appear to be. Learn about spoofing 

ich nicht herausfinden kann, was falsch läuft.

Es funktioniert bis vorher. Und ich habe Tonnen von E-Mails in meinem Posteingang.

Könnte es sein, dass das Senden von E-Mails begrenzt ist? Oder könnte es sein, dass jemand es als Spam oder Spoofing gemeldet hat?

Jede Hilfe wird sehr geschätzt. Vielen Dank.

+1

Set $ ​​mail-> SMTPDebug = 2; Debuggen und sehen Sie die Antworten des Client-Servers –

+0

Wo finde ich die Ausgabe? – Azima

+0

versuchen Sie einfach, die "mailTo" -Funktion Ausgabe –

Antwort

1

Da Sie SMTPSecure = 'ssl' verwenden, erhalten Sie keine Debug-Ausgabe mit SMTPDebug = 2, weil das nur SMTP-Level-Ausgabe zeigt; Sie benötigen SMTPDebug = 3, um Probleme auf Verbindungsebene anzuzeigen. Dies wird wahrscheinlich durch veraltete CA-Zertifikate in Ihrer PHP-Konfiguration verursacht. Es hat viele Berichte darüber gegeben, weil Google Mail kürzlich geändert wurde (warum Ihr Skript nicht mehr funktioniert). Es ist in the troubleshooting guide abgedeckt.

Warum setzen Sie auch HTML-Tags in Ihren Plan-Text AltBody? Sie werden dort nicht arbeiten.

+0

veraltete CA-Zertifikate? Es funktioniert in Server .. aber funktioniert nicht in meinem localhost ... Der Server verwendet auch den gleichen Code ... – Azima

+0

Lesen Sie sorgfältig: ** CA-Zertifikate **. Dies sind nicht die Zertifikate, die vom Server beim Herstellen einer Verbindung angezeigt werden. Sie sind die Zertifikate, die Ihr Server bereits besitzt, und überprüft, ob das vom Server stammende Zertifikat gültig ist. Ihr Ergebnis sagt mir, dass einer von ihnen auf dem neuesten Stand ist, der andere nicht. Es ist deine OS- und PHP-Konfiguration, die Fehler hat - nichts mit deinem Code zu tun. – Synchro

+0

danke ... Ich werde es überprüfen ... :) – Azima