SMTP не ошибка, но не отправка электронной почты

Я боролся с этим в течение некоторого времени. Я создал пользовательский компонент для форм и использует почтовые функции Joomla для отправки электронной почты. Я проверил все данные, чтобы убедиться, что они верны, но письмо просто не отправлено, $mailer->Send() также возвращает true.

Включение каждого стиля отчетов об ошибках не приводит к ошибкам.

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

Это сердце компонента, в котором отправляется электронное письмо, параметры $ - это объект, который я использую для хранения информации, которую мне нужно отправить по электронной почте, и после того, что прочитано как «успешное» сообщение, оно выводит все надлежащей информации. Однако мандрилл, служба, которую мы используем для электронных писем, никогда не получает электронную почту, а это означает, что, насколько я могу судить, ей не удалось подключиться к SMTP, это означает, что в какой-то момент соединения должно произойти ошибка, но Joomla не видит этого.

Этот же код работает на многих других сайтах, тот, о котором идет речь, является поддоменом и размещен с хост-сервером, хотя без какой-либо ошибки я не знаю, с чего начать искать исправление.

7 голосов | спросил Jordan Ramstad 22 PMpTue, 22 Apr 2014 23:04:20 +040004Tuesday 2014, 23:04:20

1 ответ


8

Joomla использует PHPMailer как почтовый обработчик. PHPMailer имеет хороший SMTP-журнал, если вы включите его. Вы можете сделать это, установив для переменной SMTPDebug значение 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;
}

Это поможет вам найти проблему в сообщении между Joomla и smtp-сервером.

ответил Harald Leithner 22 PMpTue, 22 Apr 2014 23:31:15 +040031Tuesday 2014, 23:31:15

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132