Назад | Перейти на главную страницу

Скрипт PHPMailer перестал работать с загадочными сообщениями об ошибках SMTP

Я пытаюсь отправить почту в PHP-скрипте через библиотеку PHPMailer. Следующий код ранее успешно отправлял электронные письма без предупреждений:

function mail_attachment($filename, $path, $mailto, $subject, $message) {
  include("PHPMailer_5.2.3/class.phpmailer.php");
  include("PHPMailer_5.2.3/class.smtp.php");

  $email_config = parse_ini_file('email.cfg');
  $from  = $email_config['sender'];
  $alias = $email_config['alias' ];
  $smtp  = $email_config['host'  ];
  $port  = $email_config['port'  ];

  $mail             = new PHPMailer();
  $mail->SMTPDebug  = 2;
  $mail->IsHTML(false);       // send as HTML?
  $mail->WordWrap   = 50;     // set word wrap

  $mail->IsSMTP();
  $mail->Host       = $smtp;  // set the host SMTP server
  $mail->Port       = $port;  // set the host SMTP port

  $mail->Subject    = $subject;
  $mail->Body       = $message;
  $mail->SetFrom(   $from, $alias);
  $mail->AddReplyTo($from, $alias);
  $mail->AddAddress($mailto);
  $mail->AddAttachment($path, $filename);

  var_dump( $email_config );

  $sent = $mail->Send();
  if(!$sent)
    echo "Mailer Error: " . $mail->ErrorInfo ."\n";
  else
    echo "Message has been sent\n";
  return $sent;
}

Внезапно электронные письма с автоматическими отчетами перестали появляться в почтовых ящиках людей, и были созданы следующие сообщения:

SMTP -> FROM SERVER:220 relay-8.dlfw.twtelecom.net ESMTP Postfix

<br />SMTP -> FROM SERVER: 250-relay-8.dlfw.twtelecom.net
250-PIPELINING
250-SIZE 25600000
250-VRFY
250-ETRN
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN

<br />SMTP -> FROM SERVER:250 2.1.0 Ok

<br />SMTP -> FROM SERVER:554 5.7.1 <localhost.localdomain>: Helo command rejected: Impossible, I am localhost

<br />SMTP -> ERROR: RCPT not accepted from server: 554 5.7.1 <localhost.localdomain>: Helo command rejected: Impossible, I am localhost

<br />SMTP Error: The following recipients failed: dataintegrity@corporate-domain.com
Mailer Error: SMTP Error: The following recipients failed: dataintegrity@corporate-domain.com<p>SMTP server error: 5.7.1 <localhost.localdomain>: Helo command rejected: Impossible, I am localhost
</p>

Mail Was NOT Successfully Sent!

У вас есть идеи, почему код перестал работать?

Проблема на моей стороне или на удаленном почтовом сервере?

У меня есть следующие конфигурации имени хоста:

/ etc / hostname

Dev07

/ etc / hosts

127.0.0.1 localhost
127.0.1.1 lamp

#Required for IPv6 capable hosts
::1 ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
ff02::3 ip6-allhosts

Похоже, что удаленному серверу не нравится тот факт, что ваш сервер сообщает, что это localhost.localdomain в HELO вы отправляете.

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

я бы порекомендовал установка вашего имени хоста к чему-то так, чтобы sendmail не сообщает как localhost.localdomain. Пока вы в этом, также, как правило, неплохо обновить /etc/hosts с IP-адресом, полным доменным именем и именем хоста сервера.

Есть учебник Вот о том, как это сделать.

/etc/hostname:
hostname.domain.tld


/etc/hosts:
127.0.0.1   localhost localhost.localdomain
::1         localhost localhost.localdomain

1.2.3.4   hostname.domain.tld hostname

Если у вас система на базе RedHat / CentOS, отредактируйте /etc/sysconfig/network и установите:

HOSTNAME=hostname.domain.tld