Я пытаюсь отправить почту в 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