J'envoie un email en utilisant le code suivant:
$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.";
}
Toutes les variables sont définies sur les valeurs appropriées.
Lorsque $ email_sent a la valeur false, existe-t-il un moyen de capturer le message d'erreur ou un autre moyen de savoir pourquoi le courrier électronique n'a pas été envoyé?
Je suis sur Joomla 3.7 et 5.6 php.
Tout d’abord, veuillez supprimer le &
Avant JFactory
Il y a un an, une demande d'attraction avait été soumise à Github, permettant à Joomla de détecter les erreurs commises par PHPMailer:
https://github.com/joomla/joomla-cms/pull/9881
Je ne suis pas sûr de l'implémentation, mais selon la documentation, la fonction send()
renverra un objet JError
si des erreurs se sont produites:
Aucune des solutions proposées ne fonctionne. La valeur jMailer return
est un casse-tête car vous ne pouvez pas intercepter les exceptions ni même connaître le type du send()
return.
Si le succès retourne un booléen true
; sinon, il retourne un objet Jexception, les deux résultats sont généralement considérés comme des valeurs booléennes vraies!
Le moyen le plus simple que j'ai trouvé est:
$result = $mail->Send();
if ($result === true) return true;
else return false;