it-swarm-es.tech

SMTP sin error pero no enviando correo electrónico

He estado luchando con esto por algún tiempo ahora. He creado un componente personalizado para formularios y utiliza las funciones de correo de Joomla para enviar correos electrónicos. Verifiqué todos los datos para asegurarme de que son correctos, pero el correo electrónico simplemente no se envía, $mailer->Send() también devuelve true.

Al activar todos los estilos de informes de errores, tampoco se informan errores.

$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;
}

Este es el corazón del componente donde se envía el correo electrónico, la configuración $ es un objeto que utilizo para almacenar la información que necesito para enviar el correo electrónico, y después de lo que se lee como un envío "exitoso", muestra toda la información adecuada . Sin embargo, el servicio que utilizamos para los correos electrónicos nunca recibe el correo electrónico, lo que significa que, por lo que puedo decir, no se pudo conectar a SMTP, lo que significa que debería haber tenido un error en algún momento de la conexión, pero Joomla no puede verlo.

Este mismo código funciona en muchos otros sitios, el que está en cuestión es un subdominio y está alojado con hostgator, aunque sin ninguna forma de error no tengo idea de dónde comenzar a buscar una solución.

7
Jordan Ramstad

Joomla usa PHPMailer como manejador de correo. PHPMailer tiene un buen registro SMTP si lo activa. Puede hacerlo estableciendo la variable SMTPDebug en verdadero

$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;
}

Esto debería ayudarlo a encontrar el problema en la comunicación entre Joomla y el servidor smtp.

8
Harald Leithner