Не удалось установить соединение Swift_TransportException с узлом smtp.gmail.com
Я не могу понять, почему именно это происходит. Это точная ошибка, которую я получаю:
Fatal error: Uncaught exception 'Swift_TransportException' with message 'Connection
could not be established with host smtp.gmail.com [Connection refused #111]' in
/home/content/38/6896038/html/test/lib/classes/Swift/Transport/StreamBuffer.php:259
Stack trace: #0
/home/content/38/6896038/html/test/lib/classes/Swift/Transport/StreamBuffer.php(64):
Swift_Transport_StreamBuffer->_establishSocketConnection() #1 /home/content/38/6896038/html/test/lib/classes/Swift/Transport/AbstractSmtpTransport.php(115): Swift_Transport_StreamBuffer->initialize(Array) #2 /home/content/38/6896038/html/test/lib/classes/Swift/Mailer.php(80): Swift_Transport_AbstractSmtpTransport->start() #3 /home/content/38/6896038/html/test/contact.php(55): Swift_Mailer->send(Object(Swift_Message)) #4 {main} thrown in /home/content/38/6896038/html/test/lib/classes/Swift/Transport/StreamBuffer.php on line 259
И код, который я использую, - это то, что я получил из учебника и читаю здесь примеры, вот он:
require_once 'lib/swift_required.php';
$transport = Swift_MailTransport::newInstance();
// Create the Transport the call setUsername() and setPassword()
$transport = Swift_SmtpTransport::newInstance('smtp.gmail.com', 465, 'ssl')
->setUsername('[email protected]')
->setPassword('xxx')
;
// Create the Mailer using your created Transport
$mailer = Swift_Mailer::newInstance($transport);
$nombre = $_POST['name'];
$apellido = $_POST['apellido'];
$email = $_POST['email'];
$telefono = $_POST['telefono'];
$title = $_POST['jobtitle'];
// Create the message
$message = Swift_Message::newInstance()
// Give the message a subject
->setSubject('Nuevo applicante para: ' . $title)
// Set the From address with an associative array
->setFrom(array('[email protected]' => 'no-reply'))
// Set the To addresses with an associative array
->setTo('[email protected]')
// Give it a body
->setBody('<html>
<head></head>
<body>
<table>
<tr>
<td>Nombre:</td><td>' . $nombre . ' ' . $apellido .'</td>
</tr>
<tr>
<td>Email:</td><td>' . $email . '</td>
</tr>
<tr>
<td>Telefono:</td><td>'. $telefono .'</td>
</tr>
</table>
</body>
</html>', 'text/html')
// Optionally add any attachments
->attach(Swift_Attachment::fromPath($_FILES["file"]["tmp_name"])->setFilename($_FILES['file']['name']));
// Send the message
$result = $mailer->send($message);
любая помощь очень приветствуется, я выполнил мое чтение и поиск и не могу найти решение этого: (
EDIT: По-видимому, это проблема с gmail, я изменился на другой smtp, и он сработал.: S
Ответы
Ответ 1
Неустранимая ошибка: исключить исключение "Swift_TransportException" с сообщением "Невозможно установить соединение с узлом smtp.gmail.com [Соединение отклонено # 111]
Отказано в подключении - это очень явное и ясное сообщение об ошибке. Это означает, что соединение сокета невозможно установить, поскольку удаленный конец активно отказался подключиться.
Очень маловероятно, что Google блокирует соединение.
Вероятно, ваш провайдер веб-хостинга имеет настройки брандмауэра, которые блокируют исходящие соединения на порту 465 или блокируют SMTP для Gmail. 465 - это "неправильный" порт для безопасного SMTP, хотя он часто используется, и Gmail его там прослушивает. Вместо этого попробуйте порт 587. Если соединение по-прежнему отклонено, вызовите ваш хост и спросите их, что произошло.
Ответ 2
удалить из config.yml
spool: { type: memory }
Затем вам нужно добавить try catch, как это
try{
$mailer = $this->getMailer();
$response = $this->getMailer()->send($message);
}catch(\Swift_TransportException $e){
$response = $e->getMessage() ;
}
Ответ 3
У меня была такая же проблема, когда я использовал веб-хостинг Godaddy и решил это, отредактировав файл .env, как,
MAIL_DRIVER=smtp
MAIL_HOST=XXXX.XXXX.in
MAIL_PORT=587
MAIL_USERNAME=dexxxxx
MAIL_PASSWORD=XXXXXXXX
MAIL_ENCRYPTION=tls
Где MAIL_HOST - ваше доменное имя от Godaddy, MAIL_USERNAME - ваше имя пользователя от Godaddy, а MAIL_PASSWORD - ваш пароль от Godaddy.
Надеюсь, это может вам помочь.
Ответ 4
tcp: 465 был заблокирован. Попробуйте добавить новые правила брандмауэра и добавьте порт правил 465. или отметьте 587 и измените шифрование на tls.
Ответ 5
У меня была та же проблема некоторое время, заменив: smtp.gmail.com
на 173.194.65.108
действительно работал у меня!
Ответ 6
В моем случае я использовал Laravel 5, и я забыл изменить глобальные глобальные таблицы в файле .env, который находится в корневой папке вашего каталога (эти переменные переопределяют вашу конфигурацию почты).
MAIL_DRIVER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=465
[email protected]
MAIL_PASSWORD=yourpassword
по умолчанию, mailhost:
MAIL_HOST=mailtraper.io
Я получал ту же ошибку, но это сработало для меня.
Ответ 7
Мое решение должно было измениться:
'driver' => 'smtp',
к
'driver' => 'mail',
В приложении /config/mail
Надеюсь, что поможет
Ответ 8
У меня была эта проблема и она была решена путем редактирования mail.php в папке config. Обычно при использовании совместного хостинга хостинговая компания позволяет создавать электронную почту, например
[email protected]
. Поэтому перейдите в настройки электронной почты под своим общим хостингом cpanel и добавьте новое электронное письмо. Возьмите это письмо и пароль и установите его в
mail.php.
Он должен работать!
Ответ 9
У меня была такая же проблема, и я смог ее исправить, отключив мой AVAST Anti Virus. Также как и расширение AVAST в браузере. Иногда антивирус блокирует ваше приложение.:) Я надеюсь, что это поможет кому угодно.