Решено : Проблема заключалась в том, что для использования службы через hostgator по какой-то причине пользователь должен входить в систему, используя основное имя dsn, а не домен SMTP имя.
Я использовал простую функцию PHP mail ()
для отправки электронных писем, и она работала нормально, но не требовала входа на сервер SMPT. Когда я перешел в библиотеку PHPMailer
, я написал этот код для отправки электронной почты, но у меня время ожидания при попытке выполнить этот вход. Согласно информации от hostgator, SMTP-сервер (с SSL / TSL) находится на порту 465
. Итак, я написал:
$mail = new PHPMailer;
$mail->SMTPDebug = 3;
$mail->isSMTP(); // Set mailer to use SMTP
$mail->Host = 'mail.mydomain.com'; // Specify main and backup SMTP servers
$mail->SMTPAuth = true; // Enable SMTP authentication
$mail->Username = 'contact@mydomain.com'; // SMTP username
$mail->Password = 'pass'; // SMTP password
$mail->SMTPSecure = 'tls'; // Enable TLS encryption, `ssl` also accepted
$mail->Port = 465; // TCP port to connect to
$mail->setFrom('contact@mydomain.com', 'my name');
$mail->addAddress('....@gmail.com', 'someone'); // Add a recipient
$mail->addReplyTo('contact@mydomain.com', 'my name');
$mail->isHTML(true); // Set email format to HTML
$mail->Subject = 'subject';
$mail->Body = 'msg body <b>bold!</b>';
$mail->AltBody = 'Corpo alternativo caso o primeiro não seja exibido';
if(!$mail->send())
{
echo 'Message could not be sent.';
echo 'Mailer Error: ' . $mail->ErrorInfo;
}
else
{
echo 'Message has been sent';
}
Но когда этот файл php вызывается, помимо того, что он не показывает echo
, которое я поместил перед кодом, он также ждал 300 секунд, чтобы открыть модальное окно, предупреждающее меня об ошибке тайм-аута. Заранее спасибо.
Думаю, ответ в вашем коде. У вас есть такие строки, как $ mail-> Host = 'mail.mydomain.com';
Не забудьте переключить все это на фактические домены. Вы должны использовать свой домен веб-сайта www.com
.
Следующее неверно.
$mail->Host = 'mail.mydomain.com'; // Specify main and backup SMTP servers
Я не удивлен, что он не отправит. Замените все значения реальными строками, имеющими значение для вашего сайта.
Есть некоторые различия между тем, как работает PHP-функция mail () и PHP Mailer. Функция mail () отправляет почту непосредственно с сервера, на котором расположен сценарий, тогда как ваш хостинг-провайдер может использовать отдельный сервер для отправки своих писем. Поэтому я бы рекомендовал вам установить полное доменное имя SMTP-сервера как $ mail-> Host
и убедиться, что свойство $ mail-> SMTPSecure
действительно должно быть tls или ssl.
Однако может быть много причин, по которым ваш код не работает, и если вы не разместите точный код, который вы используете (конечно, без пароля), я сомневаюсь, что может быть предоставлена адекватная помощь. Также рекомендуется обратиться в службу поддержки веб-хостинга.