2017-11-29 1 views
0

So habe ich diese Funktion:Ich möchte wissen, warum PHPMailer E-Mail senden versagt gelegentlich

$toAddress = $sendTo; 
try { 
    $mail = new PHPMailer(); // create a new object 
    $mail->IsSMTP(); // enable SMTP 
    $mail->SMTPDebug = 1; // debugging: 1 = errors and messages, 2 = messages only 
    $mail->SMTPAuth = true; // authentication enabled 
    $mail->Host = self::$host; 
    $mail->Port = 587;//self::$port; // or 587 
    $mail->SMTPSecure = 'tls'; 
    $mail->IsHTML(true); 
    $mail->CharSet = self::$charset; 
    $mail->Username = self::$username; 
    $mail->Password = self::$password; 
    $mail->SetFrom(self::$from, self::$fromAlias); 
    $mail->Subject = trim("Here's your csv."); 
    $mail->Body = trim("Thank you for using List Master Application. Please download your csv on this link. <a href='http://36.55.238.182:81/pagination/download?file=".$fileName."'>Here!</a>"); 
    if(is_array($toAddress)) 
    { 
     foreach($toAddress as $to_line) 
     { 
      $mail->AddAddress($to_line); 
     } 
    } 
    else 
    { 
     $mail->AddAddress($toAddress); 
    } 

    if ($mail->send()) 
    { 
      log_message('debug', 'sucessfully send email to ' . $sendTo); 
      return TRUE; 
    } 
    else 
    { 
     log_message('debug', 'Failed to send email to ' . $sendTo); 
     log_message('debug', 'Failed message is : ' . $mail->ErrorInfo); 
     return FALSE; 
    } 

    } catch (phpmailerException $e) { 
      log_message('debug', $e->errorMessage()); //Pretty error messages from PHPMailer 
    } catch (Exception $e) { 
      log_message('debug', $e->getMessage()); //Boring error messages from anything else! 
    } 

Ich habe vorher gesagt, dass ich die PHPMailer aktualisieren müssen.

Aber ich muss wissen, warum es manchmal erfolgreich sendet, und auch manchmal in dieser phpmailer 5.2 Version fehlschlagen.

Konnte es irgendwelche mail() Einstellungen fehlen?

Gibt es einen Grund für eine Zeitüberschreitung?

Kann es sein, dass Server-Mail es als Spam-Mail betrachtete?

Es ist gut, dass es meistens sendet erfolgreich, aber wenn es fehlschlägt, überprüfe ich das Protokoll und es gibt mir dies:

The following From address failed: [email protected] : Called Mail() without being connected 

Warum ist dies zeigt, wenn E-Mail senden fehlschlägt?

Was bedeutet das?

+0

Dieses bedeckt ist [im Fehlerbeseitigungs-Handbuch] (https://github.com/PHPMailer/PHPMailer/wiki/Troubleshooting#smtp-error-could-not-connect-to-smtp-host), wie Ich sagte das letzte Mal, als du gefragt hast. Der beste Weg, dies zu lösen, ist nicht direkt zu senden, sondern installieren Sie einen lokalen Mail-Server und Relais durch. Mail-Server sind speziell für zeitweilige Verbindungen konzipiert und sind auch der schnellste Weg, E-Mails während der Übermittlung von Seiten in Ihrer App zu versenden. Dies wird auch in den Leitfäden und anderen Artikeln im PHPMailer-Wiki behandelt. – Synchro

+0

Auch Sie basieren Ihren Code immer noch auf einem veralteten Beispiel (auch für 5.2), und weil Sie keine Ausnahmen aktiviert haben (indem Sie "true" an den Konstruktor übergeben), wird Ihr try/catch nichts tun. – Synchro

+0

@Synchro haben Sie irgendwelche Links, die ich den neuesten Code für das Senden von Mail basieren kann? –

Antwort

-1

PHPMailer ist das einfache System, um von Ihrer PHP-Webseite aus eine Nachricht an eine andere zu senden, und es ist eine Codebibliothek. Es ist ein einfaches System, um E-Mails sicher und einfach per PHP oder PHP-Code von einem Webserver zu senden. Weitere Details folgen diesem Link: Send mail using PHPMailer in PHP – PHP mailing system.

<?php 
    $subject ="Send Mail"; 
    $receive_email = "[email protected]"; 
    $full_name=$_POST['full_name']; 
    $phone=$_POST['phone']; 
    $email=$_POST['email']; 
    $address=$_POST['address']; 
    $user_details="Full Name: ". $full_name. "\n Phone No: ". $phone."\n Address: ".$address; 

    require_once("class.phpmailer.php"); 
    $mail = new PHPMailer(); 

    $body = "</pre> 
    <div>"; 
    $body .= "<p>Full Name :".$full_name."</p>"; 
    $body .= "<p>Phone :".$phone."</p>"; 
    $body .= "<p>Address :".$address."</p>"; 
    $body .= "</div>" ; 

    // And the absolute required configurations for sending HTML with attachement 

    $mail->AddAddress("[email protected]", "My Website Name"); 
    $mail->Subject = "Send Mail"; 
    $mail->MsgHTML($body); 

    if(!$mail->Send()) { 
     echo "There was an error sending the message"; 
     exit; 
    } 
    echo "Thank you for contacting us!"; 
?>