it-swarm.com.de

Wie erhalte ich beim Aufrufen von sendMail den Fehler, wenn die E-Mail nicht gesendet wird?

Ich sende eine E-Mail mit folgendem Code:

$mail =& JFactory::getMailer();
$email_sent = $mail->sendMail( 
        $from_email,
        $from_name,
        $to_email,
        $subject,
        $email_body,
        $sendas,
        $cc_emails,
        $bcc_emails,
        $email_attachments,
        $reply_to_email,
        $reply_to_name );
if($email_sent) {
    echo "Mail sent.";
} else {
    echo "Mail NOT sent.";
}

Alle Variablen werden auf die entsprechenden Werte gesetzt.

Wenn $ email_sent falsch ist, gibt es eine Möglichkeit, die Fehlermeldung zu erfassen, oder eine andere Möglichkeit, um herauszufinden, warum die E-Mail nicht gesendet wurde?

Ich bin auf Joomla 3.7 und PHP 5.6.

1
Sloan Thrasher

Bitte entfernen Sie zuerst, nur um eine Randnotiz, den & Vor JFactory

Es gab vor einem Jahr eine Pull-Anfrage bei Github, die es Joomla ermöglichte, die von PHPMailer ausgelösten Fehler aufzufangen:

https://github.com/joomla/joomla-cms/pull/9881

Ich bin mir bei der Implementierung nicht sicher, aber laut Dokumentation gibt die Funktion send() ein JError -Objekt zurück, wenn Fehler aufgetreten sind:

https://docs.joomla.org/Sending_email_from_extensions

2
Lodder

Keine der vorgeschlagenen Lösungen funktioniert. Der Wert von jMailer return bereitet Kopfzerbrechen, da Sie keine Ausnahmen abfangen oder den Typ der send() -Rückgabe kennen.

Wenn Erfolg ein boolesches true zurückgibt; Wenn es kein Jexception-Objekt zurückgibt, werden die beiden Ergebnisse lose als boolesche wahre Werte ausgewertet!

Der einfachste Weg, den ich gefunden habe, ist:

$result = $mail->Send();
if ($result === true)  return true;
else  return false;
0
user13355