SMTP kein Fehler, aber keine E-Mail senden


7

Ich habe seit einiger Zeit damit zu kämpfen. Ich habe eine benutzerdefinierte Komponente für Formulare erstellt, die die E-Mail-Funktionen von Joomla zum Senden von E-Mails verwendet. Ich habe alle Daten überprüft, um sicherzustellen, dass sie korrekt sind, aber die E-Mail wird einfach nicht gesendet und $mailer->Send()gibt auch true zurück.

Wenn Sie alle Arten der Fehlerberichterstattung aktivieren, werden auch keine Fehler gemeldet.

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

Dies ist das Herzstück der Komponente, an die die E-Mail gesendet wird. Die $ -Einstellungen sind ein Objekt, mit dem ich die Informationen speichere, die ich zum Senden der E-Mail benötige, und nach dem Lesen als "erfolgreich" werden alle richtigen Informationen ausgegeben . Mandrill, der Dienst, den wir für E-Mails verwenden, erhält die E-Mail jedoch nie, was bedeutet, dass, soweit ich das beurteilen kann, keine Verbindung zu SMTP hergestellt werden konnte, was bedeutet, dass irgendwann in der Verbindung ein Fehler aufgetreten sein sollte, Joomla ihn jedoch nicht sieht.

Der gleiche Code funktioniert auf vielen anderen Websites. Die betreffende ist eine Subdomain und wird mit Hostgator gehostet. Ohne Fehler habe ich jedoch keine Ahnung, wo ich nach einer Lösung suchen soll.


Haben Sie ein einfaches Skript oder ein Standard-Joomla-Kontaktformular ausprobiert, um festzustellen, ob dies funktioniert? Wenn nicht, liegt möglicherweise entweder eine E-Mail-Einstellung oder ein Serverproblem vor.
Robert ging am

Antworten:


8

Joomla verwendet PHPMailer als Mail-Handler. PHPMailer hat ein schönes SMTP-Protokoll, wenn Sie es aktivieren. Sie können dies tun, indem Sie die Variable SMTPDebug auf true setzen

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

Dies soll Ihnen helfen, das Problem in der Kommunikation zwischen Joomla und dem SMTP-Server zu finden.


1
Gott, bei all dem Googeln habe ich nicht gesehen, dass es eine solche Umgebung gibt. SMTP -> ERROR: Failed to connect to server: Connection refused (111)SMTP connect failed. Jetzt weiß ich zumindest, dass Mandrill aus irgendeinem Grund den Hostgator auf die schwarze Liste setzt.
Jordan Ramstad
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.