Je me bats avec cela depuis quelque temps maintenant. J'ai construit un composant personnalisé pour les formulaires et il utilise les fonctions de messagerie de Joomla pour envoyer des emails. J'ai vérifié toutes les données pour m'assurer qu'elles sont correctes, mais le courrier électronique n'envoie tout simplement pas, $mailer->Send()
renvoie également la valeur true.
L'activation de chaque style de rapport d'erreur ne signale pas non plus d'erreur.
$mailer = JFactory::getMailer();
$mailer->setSender($settings->sender);
$mailer->addRecipient($settings->to);
$mailer->setSubject($settings->subject);
$mailer->isHTML(true);
$mailer->setBody($settings->body);
if($send = $mailer->Send()){
//email worked
//print_r($settings);
//exit;
}else{
echo 'error';
exit;
}
C’est le cœur du composant où l’email est envoyé, le paramètre $ settings est un objet que j’utilise pour stocker les informations dont j’ai besoin pour envoyer l’email; . Cependant, le service que nous utilisons pour les e-mails ne reçoit jamais l'e-mail, ce qui signifie que la connexion au protocole SMTP a échoué.
Ce même code fonctionne sur de nombreux autres sites, celui en question est un sous-domaine et est hébergé avec hostgator, bien que, sans aucune forme d'erreur, je ne sache pas par où commencer à chercher un correctif.
Joomla utilise PHPMailer comme gestionnaire de courrier. PHPMailer dispose d’un journal Nice SMTP si vous l’activez. Vous pouvez le faire en définissant la variable SMTPDebug sur true
$mailer = JFactory::getMailer();
$mailer->SMTPDebug = true;
$mailer->setSender($settings->sender);
$mailer->addRecipient($settings->to);
$mailer->setSubject($settings->subject);
$mailer->isHTML(true);
$mailer->setBody($settings->body);
if($send = $mailer->Send()){
//email worked
//print_r($settings);
//exit;
}else{
echo 'error';
exit;
}
Cela devrait vous aider à trouver le problème dans la communication entre Joomla et le serveur smtp.