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

Использование PHPMailer на Hostgator (тайм-аут при попытке войти на SMTP-сервер)

Решено: Проблема заключалась в том, что для использования службы через 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.

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