2017-01-05 6 views
1

Код:Отправка почты через локальный сервер SMTP

<?php 
require 'PHPMailer/PHPMailerAutoload.php'; 

$mail = new PHPMailer; 

$mail->CharSet="utf-8"; 
$mail->isSMTP();         // Set mailer to use SMTP 
$mail->Host = '172.17.224.12';     // Specify main and backup SMTP servers 
$mail->SMTPAuth = false;       // Enable SMTP authentication 
//$mail->Username = '***';   // SMTP username 
//$mail->Password = '***'; // SMTP password 
$mail->SMTPSecure = 'TLS';       // Enable TLS encryption, `ssl` also accepted 
$mail->Port = 25;         // TCP port to connect to 

$mail->setFrom('[email protected]', 'Company.com'); 
$mail->addReplyTo('[email protected]'); 
$mail->addAddress('[email protected]'); // Add a recipient 

$mail->isHTML(true); // Set email format to HTML 

$bodyContent = '<h1>How to Send Email using PHP in Localhost by CodexWorld</h1>'; 
$bodyContent .= '<p>This is the HTML email sent from localhost using PHP script by <b>CodexWorld</b></p>'; 

$mail->SMTPDebug = 2; 
$mail->Subject = 'Email from Localhost by CodexWorld'; 
$mail->Body = $bodyContent; 

if(!$mail->send()) { 
    echo 'Message could not be sent.<br>'; 
    echo 'Mailer Error: ' . $mail->ErrorInfo; 

} else { 
    echo 'Message has been sent'; 
} 
?> 

Когда я запускаю этот код, он говорит, сообщение было отправлено. Однако, когда я смотрю на свою электронную почту, есть уведомление о том, что письмо, отправленное через мой код, было возвращено.

В чем может быть проблема? это была конфигурация в моем коде или это был сервер?

screencap of the bounce back email

+0

Я думаю, что сервер, на который вы пытаетесь отправить электронную почту через php - ваш локальный сервер, не имеет права отправлять электронную почту и рассматриваться как СПАМ (например, кто-то пытается отправить электронное письмо с использованием ваших учетных данных). Когда мне нужно, чтобы мои сценарии отправляли электронную почту с сервера, я добавляю свой IP-адрес сервера в качестве записи SPF в записях DNS. Таким образом, мой почтовый сервер знает, что IP-адрес отправляет мне письмо по электронной почте и позволяет. В вашем случае, я думаю, вы, вероятно, можете добавить свой IP для временного решения проблемы. Но вам также нужно сделать это для IP-сервера производства. Если это так, то ... – smozgur

+0

Подробнее о записи SPF: https://mxtoolbox.com/problem/spf/txt-record – smozgur

+0

SMTPSecure должен быть 'tls', а не' TLS', хотя вы, вероятно, Это необходимо для внутреннего сервера. Нет смысла добавлять ответ - это то же самое, что и ваш адрес. Если ваш почтовый сервер принимает ваше сообщение (т. Е. Ваш код в порядке), участие PHPMailer заканчивается. Все, что происходит после этого, - это почтовый сервер и область настройки домена. – Synchro

ответ

0

Для тех, кто сталкивается с той же проблемой, то, что решили эту проблему является ответом smozgur в.

Я думаю, что сервер, который вы пытаетесь отправить почту через PHP - локальный сервер - не разрешено отправлять электронную почту и рассматривается как СПАМ (как кто-то пытается отправить электронную почту, используя свои учетные данные). Когда мне нужно, чтобы мои сценарии отправляли по электронной почте с сервера, я добавляю свой IP-адрес сервера в качестве записи SPF в записях DNS. Таким образом, мой сервер электронной почты знает, что IP-адрес отправляет мне по электронной почте и позволяет. Я думаю, вы можете добавить свой IP-адрес для временного решения проблемы . Но вам нужно сделать это для серийного IP-сервера, как . Если это так, то ..

Я связался с начальником и сообщил ему, что функция электронной почты отправляется, а почтовый сервер отправляет электронные письма отправителю. Кроме того, возможной причиной проблемы, которая является локальным сервером, не разрешено отправлять электронную почту и рассматриваться как СПАМ. Наконец, возможное решение, которое добавляет IP-адрес сервера в качестве записи SPF в записи DNS.

Смежные вопросы