Phpmailer с использованием smtp с Gmail не работает – время подключения

Я просмотрел следующие ссылки:

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 относится к статье . Он дает несколько советов:

  1. Разрешить менее безопасным приложениям использовать вашу учетную запись .
  2. Войдите в gmail из веб-браузера.
  3. Подтвердите адрес электронной почты для входа в gmail . (На самом деле это может не отображаться для вас, но это был дополнительный шаг, который внезапно позволил моей электронной почте пройти.)

Использовать 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.

Перейдите в свои конфигурации безопасности и посмотрите, не блокирует ли он какой-либо доступ.

Или попробуйте изменить свой пароль и повторите попытку.

У этого вопроса много дубликатов, так что вот консервированный ответ:

  1. Создайте свой код в примере gmail, предоставленном PHPMailer
  2. Проверьте документы по устранению неполадок
  3. Помните об этой проблеме , связанной с тем, что сказал Ларри К.

Добавить

 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». Сделайте перезагрузку и повторите попытку, вы ее разрешите.