Я просмотрел следующие ссылки:
phpmailer отправить gmail smtp таймаут
отправлять электронную почту с помощью SMTP-сервера Gmail через PHP Mailer
http://uly.me/phpmailer-and-gmail-smtp/
… и попытался реализовать для себя комбинацию из них, однако … большую часть времени он отправляет это сообщение …
Сообщение не может быть отправлено.
Ошибка Mailer: Ошибка SMTP connect ().
Однако был один раз, когда он отправил это, когда я экспериментировал между «tls» и «ssl» …
ОШИБКА SMTP: Не удалось подключиться к серверу: таймаут подключения (110) Ошибка SMTP connect (). Сообщение не может быть отправлено.
Ошибка Mailer: Ошибка SMTP connect ().
Мой код прикреплен … Я как-то пропустил что-то? Я спросил службу веб-хостинга, если они блокируют и дал им шаблон моего кода, – они сказали, что сервер разрешает подключения к SMTP Gmail.
require_once("class.phpmailer.php"); $mail = new PHPMailer(); $mail -> IsSMTP(); $mail -> SMTPDebug = 2; $mail -> SMTPAuth = 'true'; $mail -> SMTPSecure = 'tls'; $mail -> SMTPKeepAlive = true; $mail -> Host = 'smtp.gmail.com'; $mail -> Port = 587; $mail -> IsHTML(true); $mail -> Username = "myemail@gmail.com"; $mail -> Password = "mypassword"; $mail -> SingleTo = true; $to = xxx; $from = xxx; $fromname = xxx; $subject = xxx; $message = xxx $headers = "From: $from\n"; $headers .= "MIME-Version: 1.0\n"; $headers .= "Content-type: text/html; charset=iso-8859-1\n"; $mail -> From = $from; $mail -> FromName = $fromname; $mail -> AddAddress($to); $mail -> Subject = $subject; $mail -> Body = $message; if(!$mail -> Send()){ echo "Message could not be sent. <p>"; echo "Mailer Error: " . $mail-> ErrorInfo; exit; }
Я впился в него. Используйте fsocketopen, который является родным для php, чтобы проверить соединение и устранить большинство потенциальных проблем. Напишите простую страницу php с этим:
$host = "smtp.gmail.com"; $port = "587"; $checkconn = fsockopen($host, $port, $errno, $errstr, 5); if(!$checkconn){ echo "($errno) $errstr"; } else { echo 'ok'; }
Вы должны вернуться «хорошо». Если вы не знаете, что у вас проблема с соединением, которая не имеет ничего общего с Phpmailer. Если это так, вероятно, это хостинговая компания. Если нет, то, вероятно, что-то простое о различии между вашим локальным хостом и хостинговой компанией, как разные версии php.
Я подозреваю, однако, что этот скрипт не будет устанавливать соединение
У меня была такая же проблема и она была решена:
Во-первых, включите smtp-протоколирование ошибок в phpmailer:
$mail->SMTPDebug = 2; // enables SMTP debug information (for testing)
Затем повторите попытку отправки электронной почты phpmailer. Вы увидите весь диалог SMTP на стандартном выходе ошибки. Если вы используете веб-сервер, загляните в файл журнала веб-сервера.
Затем я мог увидеть ответ об ошибке из gmail. Gmail не принимал логин.
Ошибка в разговоре smtp относится к статье . Он дает несколько советов:
Использовать ssl
$mail -> SMTPSecure = 'ssl';
Порт должен быть 465
$mail -> Port = 465;
Измените хост на:
$mail -> Host = 'ssl://smtp.gmail.com';
Надеюсь, это сработает
Убедитесь, что вы можете связаться с gmail с вашего веб-хостинга. Я предполагаю, что это Linux. SSH в и в командной строке
telnet smtp.gmail.com 587
Вы должны вернуться
Connected to smtp.something
Это должно быть различие в конфигурации между localhost и вашим провайдером
Вероятно, это может быть блокировка вашего Gmail.
Перейдите в свои конфигурации безопасности и посмотрите, не блокирует ли он какой-либо доступ.
Или попробуйте изменить свой пароль и повторите попытку.
У этого вопроса много дубликатов, так что вот консервированный ответ:
Добавить
date_default_timezone_set('Etc/UTC');
перед включением автозагрузчика. SMTP Нужно установить часовой пояс, который был моей проблемой.
Загрузите sendmail для Windows с http://www.glob.com.au/sendmail/sendmail.zip Скопируйте sendmail.exe и sendmail.ini в C: / usr / lib /
Измените sendmail.ini и введите учетные данные своей учетной записи электронной почты.
Вы также можете настроить эти 2 поля (или отправка может не работать) force_sender=you-sender@yourdomain.com force_recipient=you@yourdomain.com Кстати, я раскопал debug_logfile, чтобы я мог видеть, какие данные отправляются на мой SMTP-сервер.
edit c: \ php \ php.ini
sendmail_from = you@yourdomain.com
; Только для Unix. Вы также можете указать аргументы (по умолчанию: «sendmail -t -i»). sendmail_path = C: /usr/lib/sendmail.exe -t -i
Перезапустите apache. Запустите sendmail.exe либо с [Пуск]> Выполнить> C: /usr/lib/sendmail.exe или Перейдите в C: / usr / lib в Проводнике Windows, а затем DoubleClick в exe-файле.
И это решение появляется в Sendmail Wamp Php
Я попробовал это в Windows 10 сейчас, и он работает с учетной записью gmail
Добавлено:
Откройте CMD и сделайте sendmail как демон / службу, используя
sc create SendMail binpath= "C:\usr\lib\sendmail.exe"
Теперь убедитесь, что в вашей системе установлен OpenSSL, вы можете скачать его здесь: https://slproweb.com/products/Win32OpenSSL.html
Устанавливает версию, что вам нужно, и не забудьте установить «файлы в папку Windows». Сделайте перезагрузку и повторите попытку, вы ее разрешите.