I have this code, and all works well in my local server. The email is sent without any problem.
But now I pass the content to webserver, and I get this error…
SMTP Error: Could not connect to SMTP host.
SSL is enable in the server..correct? so, what is the problem?

$mail = new PHPMailer();
$mail->IsSMTP();
$mail->SMTPAuth = true; // enable SMTP authentication
$mail->SMTPSecure = "ssl"; // sets the prefix to the servier
$mail->Host = "smtp.gmail.com"; // sets GMAIL as the SMTP server
$mail->Port = 465; // set the SMTP port
$mail->Username = "dnteiro"; // GMAIL username
$mail->Password = "xxx"; // GMAIL password
![]()
asked Jun 1, 2011 at 23:59
3
It sounds like your web host is blocking outbound connections to smtp.gmail.com:465. Suggestions:
-
Verify: If you have shell/terminal access to your web hosting server, try a telnet test to verify that they are in fact blocking this. Run
telnet smtp.gmail.com 465 -
Contact: Call or email your hosting provider and find out what SMTP server they provide for outbound relay. Make sure they know you want to use your
@gmail.comaddress as the From/Reply-to address. -
Update code: Once your host provides you with a different mail server, update your code and try again.
If your web host doesn’t allow outbound relay from its servers at all, then you need to look at switching hosts, if this is a requirement for your application.
answered Jun 2, 2011 at 0:07
AJ.AJ.
27.1k17 gold badges84 silver badges93 bronze badges
1
answered Jan 1, 2012 at 3:28
![]()
Nir AlfasiNir Alfasi
52.7k11 gold badges83 silver badges127 bronze badges
require 'phpmailer/PHPMailerAutoload.php';
$mail = new PHPMailer;
$mail->isSMTP();
$mail->Host = 'mail.abc.co.in';
$mail->Port = 587;
$mail->SMTPAuth = true;
$mail->SMTPSecure = 'tls';
$mail->SMTPOptions = array(
'ssl' => array(
'verify_peer' => false,
'verify_peer_name' => false,
'allow_self_signed' => true
)
);
$mail->Username = 'user name';
$mail->Password = 'password';
$mail->setFrom("from email id", "name");
$mail->addAddress("receipiant email id");
$mail->isHTML(true);
$bodycontent = 'body';
$mail->Body = $bodycontent;
if (!$mail->send()) {
echo "message has been not send", $mail->ErrorInfo;
}
else{
echo "message has been send";
}
answered Mar 7, 2020 at 6:21
![]()
SMTP Error: Could not connect to SMTP host. Message could not be sent.
Mailer Error: SMTP Error: Could not connect to SMTP host.
I can’t seem to find a way to make PHPMailer work under CentOS. Mail work just fine under Windows with XAMPP but I always get this error under Linux.
The SMTP server is a Lotus Domino listening on port 25, CentOS machine has NO firewall at all and the strange thing is that even mail() does not work. It returns nothing (while on Windows returns 1). If I send an email through telnet via CentOS server it works just fine so I don’t think it is a network problem. It must be related to PHP but I don’t know how.
<?php
require("class.phpmailer.php");
$mail = new PHPMailer();
$mail->IsSMTP();
$mail->Host = "192.168.x.x";
$mail->SMTPAuth = false;
$mail->From = "xxx@xxx.it";
$mail->FromName = "XXX";
$mail->AddAddress("xxx@xxx.it");
$mail->IsHTML(true);
$mail->Subject = "Test";
$mail->Body = "Test";
if(!$mail->Send())
{
echo "Message could not be sent. <p>";
echo "Mailer Error: " . $mail->ErrorInfo;
exit;
}
echo "Message has been sent";
?>
Just to clarify the code above works on XAMPP (Windows).
I debugged the error on PHPMailer and error happens here (class.smtp.php method Connect()):
$this->smtp_conn = @fsockopen($host, // the host of the server
$port, // the port to use
$errno, // error number if any
$errstr, // error message if any
$tval); // give up after ? secs
// verify we connected properly
if(empty($this->smtp_conn)) {
$this->error = array("error" => "Failed to connect to server",
"errno" => $errno,
"errstr" => $errstr);
if($this->do_debug >= 1) {
echo "SMTP -> ERROR: " . $this->error["error"] . ": $errstr ($errno)" . $this->CRLF . '<br />';
}
return false;
}
It looks like it can’t open the Socket…
UPDATE: Using $mail->SMTPDebug = 2; as suggested by Alvaro produced this output:
SMTP -> ERROR: Failed to connect to server: Permission denied (13)
SMTP Error: Could not connect to SMTP host. Message could not be sent.
Mailer Error: SMTP Error: Could not connect to SMTP host.
I can’t seem to find a way to make PHPMailer work under CentOS. Mail work just fine under Windows with XAMPP but I always get this error under Linux.
The SMTP server is a Lotus Domino listening on port 25, CentOS machine has NO firewall at all and the strange thing is that even mail() does not work. It returns nothing (while on Windows returns 1). If I send an email through telnet via CentOS server it works just fine so I don’t think it is a network problem. It must be related to PHP but I don’t know how.
<?php
require("class.phpmailer.php");
$mail = new PHPMailer();
$mail->IsSMTP();
$mail->Host = "192.168.x.x";
$mail->SMTPAuth = false;
$mail->From = "xxx@xxx.it";
$mail->FromName = "XXX";
$mail->AddAddress("xxx@xxx.it");
$mail->IsHTML(true);
$mail->Subject = "Test";
$mail->Body = "Test";
if(!$mail->Send())
{
echo "Message could not be sent. <p>";
echo "Mailer Error: " . $mail->ErrorInfo;
exit;
}
echo "Message has been sent";
?>
Just to clarify the code above works on XAMPP (Windows).
I debugged the error on PHPMailer and error happens here (class.smtp.php method Connect()):
$this->smtp_conn = @fsockopen($host, // the host of the server
$port, // the port to use
$errno, // error number if any
$errstr, // error message if any
$tval); // give up after ? secs
// verify we connected properly
if(empty($this->smtp_conn)) {
$this->error = array("error" => "Failed to connect to server",
"errno" => $errno,
"errstr" => $errstr);
if($this->do_debug >= 1) {
echo "SMTP -> ERROR: " . $this->error["error"] . ": $errstr ($errno)" . $this->CRLF . '<br />';
}
return false;
}
It looks like it can’t open the Socket…
UPDATE: Using $mail->SMTPDebug = 2; as suggested by Alvaro produced this output:
SMTP -> ERROR: Failed to connect to server: Permission denied (13)
0 Пользователей и 1 Гость просматривают эту тему.
- 42 Ответов
- 16155 Просмотров

Не получается настроить отправку почты. При использовании PHP Mail, пишет — «не удалось вызвать функцию mail». При использовании Send Mail — пишет «/var/qmail/bin/sendmail». При использовании SMTP — пишет «Ошибка SMTP! Не удаётся подключиться к хосту SMTP.».
Интересно, то, что этот же ящик работает с такими же настройками (один в один) на этом же сервере (сервер VDS) только на другом сайте с J1.5. В чем может быть дело и как это исправить?
Заранее спасибо за помощь, если кто-то с таким сталкивался и знает как настроить почту на J1.7.
PHP Mail у меня работает (сервер VDS).
SMTP — это вообще немного другая вещь (например подключить «яндекс, почта для домена») но тоже работает.
Записан
Я с мобильного, в основном…
SMTP — это вообще немного другая вещь (например подключить «яндекс, почта для домена») но тоже работает.
Это использование любого стороннего ящика — пробовала mail.ru и yandex. не работает в J1.7, а вот в J1.5 — сразу и никаких проблем.
Настроить получилось… Пришлось перерыть Joomla 1.5.23. Может быть кому-нибудь пригодится:
За отправку почты в Joomla отвечает файл компонента phpmailer.php. В версии 1.5.x там есть строки:
$params = sprintf("-oi -f %s", $this->Sender);
$params = '';
В Joomla версии 1.7 по какой-то причине отсутствует строка:
Так вот, если ее туда добавить, то почта начинает работать. Не знаю глюк это, недоработка или «так задумано» разработчиками, но голову пришлось поломать.
Спс, помогло 
Прикол — у меня этот глюк появился с обновления 1.6.х-1.7, и сам(!) пропал при обновлении до 1.7.1 — я даже phpmailer.php посмотреть не успел..
Видно разработчики учли…
(p.s. автоматическое обновление у меня не проходит, приходится скачивать патч с русской легализацией с http://joomlaportal.ru)
а у меня при обновлении все слетает и опять не работает.. только что накатила 1.7.2 — увы.. пришлось опять править
Belka,
спасибо за совет, проблема устранилась быстро и качественно 
Joomla 1.7.3, разные хостеры.
1. У одного phpmailer.php добавлена строка
Ошибка «Не удалось вызвать функцию mail» всё равно остаётся, письма на xxx@yandex.ru не уходят.
2. У другого в phpmailer.php нет строки
Ошибки нет, письма уходят и доходят до адресата.
Вопрос: может ли в этом случае быть что-то отключено со стороны хостера?
« Последнее редактирование: 21.11.2011, 04:09:26 от Maxum »
Записан
Строку ($params = »; ) прописал, кэш почистил/ Проблема осталась(((
Может действительно, проблема у хостера? В таком случае, какие настройки хостинга должны быть выставлены?
Большое Спасибо! Не работала отправка почты на Joomla 1.5.24 ковырял целый день прочитал ваш пост заменил phpmailer.php
Заработало Ура!
Подскажите, пожалуйста, в какой папке находится файл компонента phpmailer.php. Не могу его найти.
Хостер отказался мне помочь. Пишет — это проблема Joomla.
Подскажите, пожалуйста, в какой папке находится файл компонента phpmailer.php. Не могу его найти.
Libraries/phpmailer/
Спасибо, но не помогло. Все равно почта не работает. В ПУ хостинга почту вижу, а в админке ее нет.
Спасибо, но не помогло. Все равно почта не работает. В ПУ хостинга почту вижу, а в админке ее нет.
Не понял. Вы хотите читать письма в админке?
Посылаю сообщение на адрес admin@имя_сайта для проверки работы почты сайта. В панели управления хостинга сообщение вижу и могу прочитать. А в админке пишет «сообщений нет».
Регистрацию пользователей сайта могу делать только автоматическую, без посылки на его адрес ссылки для активации учетной записи. Потому что никакая ссылка не посылается.
Т.е. никакая работа, связанная с почтовым ящиком, не делается. Он вообще не работает.
И так в обоих сайтах на Joomla 1.7.3.
Захожу в админке на страничку «новое личное сообщение». Нажимаю «выбор пользователя». Выдает пустой список. А на сайте есть много зарегистрированных пользователей.
Посылаю сообщение на адрес admin@имя_сайта для проверки работы почты сайта. В панели управления хостинга сообщение вижу и могу прочитать. А в админке пишет «сообщений нет».
Регистрацию пользователей сайта могу делать только автоматическую, без посылки на его адрес ссылки для активации учетной записи. Потому что никакая ссылка не посылается.
Т.е. никакая работа, связанная с почтовым ящиком, не делается. Он вообще не работает.
И так в обоих сайтах на Joomla 1.7.3.
Ну для начала обновитесь… У Вас не последняя версия.
Далее, в админке ваши письма отображаться не будут. Они будут только в панели управления хостингом, что логично =) Или в 1.7 ввели такой функционал? Сомневаюсь.
Ну и покажите какие настройки стоят для почты в админке
Не знаю, где делают настройку почты. Нигде в админке не нашла раздел «настройка почты».
Не знаю, где делают настройку почты. Нигде в админке не нашла раздел «настройка почты».
О_о Сайт-Общие настройки-Сервер
Там справа
Здрасти помогите такая проблема при добовлении нового материалла , левый модуль опускается в самый низ в нем находится(ресистрация,популярное,голосование и т.д)я в Joomle не данвно занимаюсь недели 2
спасибо, нашла. В настройках почты написано:
Способ отправки: php mail
E-mail сайта: мой е-mail
Отправитель письма: название сайта
путь к sendmail: /usr/sbin/sendmail
Авторизация на smtp-сервере: нет
Защита smtp:нет
Порт smtp-сервера: 25
Имя пользователя smtp: (пусто)
Пароль для smtp: (пусто)
smtp-сервер: localhost
Как видно, тут собака зарыта. Нужно было заполнить эти поля?
Как видно, тут собака зарыта. Нужно было заполнить эти поля?
отправляются письма?
Пока ни от кого писем не получала. Пробовала сама отправить на ящик сайта письмо. В админке пишет «нет сообщений».
Пока ни от кого писем не получала. Пробовала сама отправить на ящик сайта письмо. В админке пишет «нет сообщений».
Так, еще раз!
В админке Вы писем не прочитаете! Там нет такого функционала! Сайт почту только отправляет! Но не принимает! Попробуйте письмо об активации получить.
Теперь понятно?
Сообщение об активации прошло.
Но когда хочу послать сообщение и захожу на страничку «создание личного сообщения» в админке и нажимаю «выбрать пользователя» — выходит пустой список. Хотя на фильтре по группе пользователей стоит «все», а на сайте больше 10 зарегистрированных пользователей.
Что может быть?

SMTP-сервер — это программное обеспечение для отправки электронных писем, использующее SMTP протокол. Напомним, что вообще работа электронной почты обеспечивается с помощью трех протоколов: POP3 или IMAP — для получения писем, SMTP — для отправки.
Передача письма по SMTP происходит с помощью TCP-соединения. Стандартный порт для незащищенного соединения — 25. Однако многие сервисы по умолчанию его блокируют, так как именно на него обычно идет рассылка вирусного спама.
В качестве альтернативных можно прописывать в настройках порты 587 и 2525.
Для защищенного соединения по SSL используется порт 465.
Как работает SMTP-сервер
Функции почтового сервера SMTP сводятся к следующему:
- определить домен получателя письма и то, совпадает ли он с доменом отправителя;
-
определить IP-адрес сервера SMTP получателя;
-
установить соединение с ним;
-
с помощью серии запросов-ответов передать адреса отправителя и получателя, а также само письмо вместе с заголовками.
Если провести аналогию с обычной почтой, то функции SMTP-сервера можно сравнить с работой почтового отделения, которое проверяет корректность данных получателя на вашем конверте и отправляет письмо по месту назначения. Само письмо почтовое отделение не вскрывает. Сервер SMTP также не проверяет заголовки и содержимое вашего письма, а отправляет его как есть.
Виды почтовых серверов
SMTP-сервер встречается в нескольких вариантах:
- Бесплатные серверы SMTP. Идут как дополнение к бесплатным почтовым сервисам, таким как Яндекс.Почта, Gmail, Mail.ru и другим. Предназначены в основном для личного использования и не подходят для корпоративных рассылок: есть ограничения на количество отправок, высокий риск попасть под спам-фильтры и т. д.
- Сервер, предоставляемый интернет-провайдером. Этот вариант SMTP чем-то похож на использование бесплатных почтовых серверов: у вас также будут ограничения на отправку писем и, возможно, на скорость обработки очереди отправки
- SMTP от хостинга. Обычно достаточно производительный и без ограничений на отправку. Но нужно учитывать, что при массовых рассылках и низком качестве списка получателей есть большой риск попасть под спам-фильтр, причем не только того адреса, с которого ведется рассылка, но и всего домена.
- Коммерческие серверы SMTP. Предлагаются многими сервисами рассылок. Лучшее решение, если вы рассылаете множество писем, причем как транзакционных, так и рекламных. Обеспечивают быструю и надежную доставку и снижают риск попадания ваших писем в папку «Спам» у получателей.
Ответы SMTP-сервера. Коды успешной или неуспешной обработки запроса
В процессе передачи данных по SMTP ваш сервер отправляет на почтовый сервер получателя запросы, а тот высылает ответы. Ответы содержат трехзначный код, в котором зашифрован результат обработки запроса, и поясняющий текст к нему. Коды ответов могут иметь вид:
- 2xx. Такой ответ означает, что предыдущая команда была успешно выполнена.
- 3xx. Коды, начинающиеся на тройку, высылаются на промежуточном этапе передачи, когда сервер ждет остальную часть данных.
- 4xx. Это коды ошибок, которые могут носить временный характер.
- 5xx. В эту категорию относятся коды критичных ошибок.
Коды ошибок SMTP, их причины и варианты исправления ситуации
Прежде всего учтите важный момент: хотя многие коды ответов стандартны, существуют и уникальные для каждого SMTP сервера коды. Их могут создавать администраторы почтовых серверов. Обычно к ним идет поясняющий текст, из него можно понять, в чем дело.
Мы же разберем самые распространенные ошибки SMTP и поясним, что делать в этих ситуациях.
Ошибка 421
Расшифровка ошибки SMTP 421 — «сервис недоступен». Причиной могут быть:
-
Блокировка трафика на 25 порту. Пропишите в настройках альтернативные порты.
-
Неправильно заданы настройки соединения. Проверьте и исправьте настройки.
-
Ваш антивирус или брандмауер блокирует соединение с сервером SMTP.
Попробуйте отключить программу защиты и отправить письмо. Если ошибка исчезла, значит дело в этом. Добавьте IP-адрес сервера в исключения антивируса или брандмауера.
- Использование VPN. Встречается достаточно редко, но все же проверьте, отправляется ли письмо, если отключить VPN. Если да, то необходимо обратиться к администраторам VPN-сервиса, чтобы устранить проблему.
-
Вы используете бесплатный сервер SMTP и при этом отправляете много писем. У таких серверов существуют лимиты на отправку в определенный промежуток времени, возможно, вы его превысили. Вам лучше использовать профессиональные платные решения.
-
Грейслистинг (серый список). Это функция защиты от спама. Работает она следующим образом: в ответ на все подозрительные письма, письма с адресов, с которых сообщение приходит впервые, сервер отправляет эту ошибку. Если на стороне отправителя — легитимный SMTP-сервер, а не спамерское ПО, то через некоторое время он отправит письмо еще раз, и уже тогда сервер получателя примет письмо. Спамеры обычно не предпринимают повторных попыток отправки. Предпринимать в этом случае обычно ничего не нужно — если вы пользуетесь надежным сервером, он сам повторит отправку и письмо будет доставлено.
Ошибка 451
Эта ошибка означает, что отправка была прервана в процессе. Возможные причины и пути решения проблемы следующие:
- На DNS-сервере неправильно прописаны параметры почтового сервера (MX записи). Например, некорректно проставлены предпочтения, если почтовых серверов для домена несколько. Перепроверьте и исправьте записи. Возможно, потребуется также посмотреть логи и файлы конфигурации.
- Превышены лимиты сервера на отправки или подключения. Проверьте, нет ли подозрительно большого количества отправляемых писем, если все нормально — увеличьте лимиты в настройках.
Ошибка 452
Означает, что либо у вас, либо у получателя закончилось место на машине, где установлен сервер, или не хватает памяти для обработки. Проверьте, есть ли в сообщении упоминание про «memory», и проверьте свою систему. Если у вас все в порядке, обратитесь к получателю.
Ошибка 550
Самый распространенный тип ошибки SMTP. В большинстве случаев возникает, если указан несуществующий email-адрес получателя. Но также возможны следующие причины:
- Не работает почтовый сервер на стороне адресата. Попробуйте отправить любое письмо на домен, за который отвечает другой почтовый сервер. Если письмо успешно отправлено — значит, проблема не у вас, нужно связаться с адресатом и объяснить ему ситуацию.
-
Неправильно настроены параметры SMTP — перепроверьте настройки.
-
Вы используете сервер провайдера, и у него установлены лимиты на отправку сообщений. Свяжитесь с провайдером, узнайте значения лимитов. При необходимости перейдите на другой тариф или используйте платный SMTP-сервер.
-
Возможно, в вашей сети вирус и с вашего адреса рассылается спам. Проверьте систему с помощью антивирусного ПО.
Ошибка 571
Это ошибка означает, что сервер SMTP получателя не принял ваше письмо. Возможные причины:
- Ваш IP-адрес заблокирован почтовым сервером адресата. Это может сделать антивирусное ПО, или файервол, или программное обеспечение для защиты от спама. Проблему нужно решать с системным администратором получателя.
-
Ваш email внесен в списки спамеров. Нужно разбираться в причине и предпринимать меры, чтобы его оттуда удалили.
-
У вашего IP нет rDNS записи. Это необходимый параметр, без него ни один почтовый сервер не примет ваше письмо. Для решения проблемы обратитесь к хостинг-провайдеру.
Истек сертификат почтового сервера
Просто обновите сертификат SMTP.
Я использовал PHPMailer в нескольких проектах, но теперь застрял. Это дает мне ошибку:
Ошибка SMTP: не удалось подключиться к узлу SMTP.
Я пробовал отправлять электронную почту из Thunderbird, и это работает! Но не через PHPMailer … Вот настройки от Thunderbird:
Имя сервера: mail.exampleserver.com
Порт: 587
Имя пользователя: user@exampleserver.com
Безопасная аутентификация: нет
Безопасность подключения: STARTTLS
Я сравнил их с сервером в моем последнем проекте, где я использовал PHPMailer, и они были:
Имя сервера: mail.exampleserver2.com
Порт: 465
Имя пользователя: user@exampleserver2.com
Безопасная аутентификация: нет
Безопасность подключения: SSL / TLS
Мой PHP-код:
$mail = new PHPMailer();
$mail->IsSMTP(); // send via SMTP
$mail->Host = SMTP_HOST; // SMTP servers
$mail->Port = SMTP_PORT; // SMTP servers
$mail->SMTPAuth = true; // turn on SMTP authentication
$mail->Username = SMTP_USER; // SMTP username
$mail->Password = SMTP_PASSWORD; // SMTP password
$mail->From = MAIL_SYSTEM;
$mail->FromName = MAIL_SYSTEM_NAME;
$mail->AddAddress($aSecuredGetRequest['email']);
$mail->IsHTML(true); // send as HTML
Где я не прав?
12 ответы
Поскольку этот вопрос часто встречается в Google, я хотел бы поделиться здесь своим решением для случая, когда PHP был только что обновлен до версии 5.6 (которая имеет более строгое поведение SSL).
В вики PHPMailer есть раздел об этом:
https://github.com/PHPMailer/PHPMailer/wiki/Troubleshooting#php-56-certificate-verification-failure
Предлагаемый обходной путь включает следующий фрагмент кода:
$mail->SMTPOptions = array(
'ssl' => array(
'verify_peer' => false,
'verify_peer_name' => false,
'allow_self_signed' => true
)
);
Это должно работать для PHPMailer 5.2.10 (и выше).
Примечание: Очевидно, как и предлагается в этой вики, это должно быть временное решение!
Правильным решением этой проблемы является замена недействительного, неправильно настроенного или самозаверяющего сертификата на исправный.
ответ дан 04 апр.
Создан 14 фев.
Ваша проблема, скорее всего, в этом
Безопасность подключения: STARTTLS Безопасность подключения: SSL / TLS
Это 2 разных протокола. Используете ли вы правильный, какой бы из них вы ни использовали в Thunderbird, нужно использовать.
Попробуйте установить переменную:
// if you're using SSL
$mail->SMTPSecure = 'ssl';
// OR use TLS
$mail->SMTPSecure = 'tls';
ответ дан 13 авг.
У меня была аналогичная проблема, и я понял, что это openssl.cafile директива конфигурации в php.ini который нужно было установить, чтобы разрешить проверку безопасных узлов. Вы просто устанавливаете его в расположение файла центра сертификации, такого как тот, который вы можете получить по адресу http://curl.haxx.se/docs/caextract.html.
Эта директива появилась в PHP 5.6 впервые, поэтому при обновлении с PHP 5.5 это застало меня врасплох.
Создан 16 июн.
У меня была такая же проблема, потому что PHPMailer понял, что сервер поддерживает STARTTLS, поэтому он попытался автоматически обновить соединение до зашифрованного соединения. Мой почтовый сервер находится в той же подсети, что и веб-сервер в моей сети, который находится за нашими брандмауэрами домена, поэтому я не слишком беспокоюсь об использовании шифрования (плюс сгенерированные электронные письма в любом случае не содержат конфиденциальных данных).
Итак, я пошел дальше и изменил SMTPAutoTLS на false в файле class.phpmailer.php.
/**
* Whether to enable TLS encryption automatically if a server supports it,
* even if `SMTPSecure` is not set to 'tls'.
* Be aware that in PHP >= 5.6 this requires that the server's certificates are valid.
* @var boolean
*/
public $SMTPAutoTLS = false;
Создан 31 янв.
Для меня работал следующий код:
$mail = new PHPMailer(true);
$mail->isSMTP();// Set mailer to use SMTP
$mail->CharSet = "utf-8";// set charset to utf8
$mail->SMTPAuth = true;// Enable SMTP authentication
$mail->SMTPSecure = 'tls';// Enable TLS encryption, `ssl` also accepted
$mail->Host = 'smtp.gmail.com';// Specify main and backup SMTP servers
$mail->Port = 587;// TCP port to connect to
$mail->SMTPOptions = array(
'ssl' => array(
'verify_peer' => false,
'verify_peer_name' => false,
'allow_self_signed' => true
)
);
$mail->isHTML(true);// Set email format to HTML
$mail->Username = 'Sender Email';// SMTP username
$mail->Password = 'Sender Email Password';// SMTP password
$mail->setFrom('example@mail.com', 'John Smith');//Your application NAME and EMAIL
$mail->Subject = 'Test';//Message subject
$mail->MsgHTML('HTML code');// Message body
$mail->addAddress('User Email', 'User Name');// Target email
$mail->send();
Создан 27 июн.
mail.exampleserver.com существует ??? , если нет, попробуйте следующий код (у вас должна быть учетная запись gmail)
$mail->SMTPSecure = "ssl";
$mail->Host='smtp.gmail.com';
$mail->Port='465';
$mail->Username = 'you@gmail.com'; // SMTP account username
$mail->Password = 'your gmail password';
$mail->SMTPKeepAlive = true;
$mail->Mailer = "smtp";
$mail->IsSMTP(); // telling the class to use SMTP
$mail->SMTPAuth = true; // enable SMTP authentication
$mail->CharSet = 'utf-8';
$mail->SMTPDebug = 0;
Создан 23 сен.
$mail->SMTPDebug = 2; // to see exactly what's the issue
В моем случае это помогло:
$mail->SMTPSecure = false;
$mail->SMTPAutoTLS = false;
Создан 28 янв.
У меня была аналогичная проблема. Я установил PHPMailer версии 1.72, которая не подготовлена для управления SSL-соединениями. Обновление до последней версии решило проблему.
ответ дан 22 мая ’12, 13:05
Поскольку это распространенная ошибка, ознакомьтесь с PHPMailer вики по поиску и устранению неисправностей.
Также это сработало для меня
$mailer->Port = '587';
ответ дан 20 апр.
Я недавно столкнулся с этой проблемой, и причина проблемы оказалась в том, что корневой сертификат на SMTP-сервере, к которому я подключался, был Корневой сертификат Sectigo, срок действия которого недавно истек.
Если вы подключаетесь к SMTP-серверу с помощью SSL / TLS или STARTTLS, и в последнее время вы ничего не меняли в среде, в которой работает ваш скрипт PHPMailer, и эта проблема внезапно возникла — тогда вы можете проверить, не истек ли срок действия или нет. недействительный сертификат где-то в цепочке сертификатов на сервере.
Вы можете просмотреть цепочку сертификатов сервера, используя openssl s_client.
Для SSL / TLS на порту 465:
openssl s_client -connect server.domain.tld:465 | openssl x509 -text
Для STARTTLS на порту 587:
openssl s_client -starttls smtp -crlf -connect server.domain.tld:587 | openssl x509 -text
Создан 10 июн.
В моем случае в CPANEL у меня есть опция «Зарегистрировать идентификаторы почты», где я добавляю свой адрес электронной почты, и через 30 минут он отлично работает с простой функцией почты php.
Создан 07 фев.
Не тот ответ, который вы ищете? Просмотрите другие вопросы с метками
php
email
phpmailer
or задайте свой вопрос.
На чтение 6 мин. Просмотров 181 Опубликовано 16.04.2021
Некоторые пользователи сообщали об ошибке «сервер ответил: 421 не может подключиться к SMT/SMTP-серверу» при попытке отправить электронное письмо в Outlook. Часто ошибка возникает из-за неправильных настроек для SMTP//SMT-сервера, но есть несколько других причин, которые вызывают такое поведение Outlook.
Ошибка довольно часто встречается в учетных записях Gmail. настроен в Outlook.
Ошибки SMTP/SMT, обнаруженные в Outlook, можно в целом разделить на следующие четыре категории:
- Ошибки конфигурации Outlook . Наиболее частой причиной ошибки Outlook не удается подключиться к SMTP/SMT-серверу является ошибка конфигурации в настройках Outlook. Но это применимо только в том случае, если проблема возникла с недавно настроенной учетной записью электронной почты.
- Проблемы, связанные с брандмауэром . Такое поведение неизвестно со встроенным в брандмауэре Windows. Однако некоторые сторонние брандмауэры и антивирусные пакеты настроены на блокировку подключения к некоторым диапазонам IP-адресов, в том числе к почтовому серверу. Это могло быть основной причиной получения ошибки при отправке электронного письма в Outlook.
- Фильтрованный трафик на порту 25 – одна из наиболее распространенных практик, применяемых интернет-провайдерами. Чтобы свести к минимуму автоматический спам, необходимо заблокировать трафик через порт 25 . Хотя это эффективно предотвращает использование зараженных компьютеров в качестве сетей для спама, это также создает множество проблем для конечного пользователя, включая ошибку 421 Не удается подключиться к SMTP-серверу .
- Помехи, вызванные подключением VPN . У некоторых поставщиков VPN (особенно новых продуктов) может не быть почтового сервера, который вы использовали, в белом списке. Известно, что это вызывает ошибку «сервер ответил, что 421 не может подключиться к серверу SMT» .
В зависимости от причины сообщения об ошибке пользователи следует использовать соответствующее решение. Ниже представлен набор методов, которые были успешно развернуты пользователями для решения проблемы « сервер ответил: 421 не может подключиться к SMT/SMTP-серверу» и нормально отправлять электронные письма в Outlook.
Примечание. Прежде чем приступить к устранению неполадок с помощью описанных ниже методов, убедитесь, что установка Outlook не повреждена. Чтобы убедиться, что проблема не вызвана неправильной установкой Outlook, переустановите версию Outlook и посмотрите, появляется ли сообщение об ошибке по-прежнему.
Если вы настроили только учетную запись Outlook, начните с Метод 1 и устранение ошибок конфигурации. Если раньше вы могли отправлять электронные письма в Outlook, начните с метода 2 и продолжайте дальше..
Если вы не уверены в причине проблемы, следуйте каждому методу по порядку, пока не найдете решение, которое успешно решает вашу проблему.
Содержание
- Метод 1. Устранение проблем с конфигурацией Outlook
- Метод 2: изменение порта SMTP номер
- Метод 3: Проверка на наличие помех брандмауэра
- Метод 4. Проверка помех от VPN
Метод 1. Устранение проблем с конфигурацией Outlook
Если вы недавно настроили свою учетную запись электронной почты в Outlook, скорее всего, ошибка вызвана ошибкой конфигурации. Имейте в виду, что из-за неправильного написания имени почтового сервера или неправильной настройки порта Outlook будет отображать ошибку « 421 не может подключиться к SMT/SMTP-серверу» при отправке или получении электронной почты.
Если вы вручную настроили параметры учетной записи электронной почты в первый раз, давайте попробуем повторно добавить вашу учетную запись и позволить Outlook автоматически добавить правильные параметры. В большинстве случаев Outlook хорошо выбирает правильные порты. Вот краткое руководство по автоматическому добавлению правильной конфигурации:
- Давайте начнем с удаления учетной записи, прежде чем позволить Outlook автоматически перенастроить настройки. Для этого откройте Outlook и перейдите в Файл> Настройки учетной записи , выберите нужную учетную запись и нажмите кнопку Удалить .
- После удаления учетной записи нажмите кнопку Создать , выберите Учетная запись электронной почты и снова введите свои учетные данные. Нажмите Далее и дождитесь настройки параметров и отправки тестового сообщения электронной почты.
- Если тестовое электронное письмо успешно отправлено, ваша учетная запись электронной почты должна быть успешно настроена.

Если вы получаете такое же сообщение об ошибке при отправке тестового электронного письма, перейдите к методу 2.
Метод 2: изменение порта SMTP номер
Если вы получаете такое же сообщение об ошибке, когда тестовое электронное письмо отправляется в Outlook, весьма вероятно, что проблема возникает из-за того, что порт SMTP (25) фильтруется вашим Интернет-провайдер. Известно, что некоторые интернет-провайдеры блокируют трафик через порт 25 , пытаясь свести к минимуму распространение автоматического спама.
Примечание: Этот сценарий применим только в том случае, если ваше соединение с сервером исходящей почты (SMTP) настроено через SSL .
Вы можете проверить если это причина ошибки, измените номер порта SMTP с 25 на 465 и посмотрите, возобновится ли нормальная работа. Для этого перейдите в Файл> Настройки учетной записи , выберите учетную запись электронной почты, в которой возникла проблема, и нажмите кнопку Изменить .
В мастере Изменить учетную запись перейдите в Дополнительные настройки и выберите Дополнительно . Затем введите 465 в поле рядом с Сервер исходящей почты (SMTP) и убедитесь, что тип зашифрованного соединения установлен на SSL .
Если проблема все еще не решена перейдите к Методу 3 .
Метод 3: Проверка на наличие помех брандмауэра
Брандмауэры – это дополнительные барьеры безопасности, которые защищают нас от злонамеренных атак и взломов. Но некоторые решения сторонних брандмауэров ошибочно блокируют определенные диапазоны IP-адресов на основе ряда шаблонов активности. Если немного не повезет, IP-адрес почтового сервера может оказаться в этом списке. , что приведет к ошибке «сервер ответил, что 421 не может подключиться к серверу SMT» . Известно, что антивирус Avast вызывает конфликты с Outlook.
Вы Вы можете проверить этот сценарий, отключив сторонний брандмауэр/антивирус и отправив тестовое электронное письмо через Outlook. Если электронное письмо отправлено успешно, начните просматривать настройки антивируса и посмотрите, можете ли вы добавить почтовый сервер в список исключений . Расположение списка исключений во многом зависит от вашего стороннего антивируса.
Примечание . Если вы используете надстройки Outlook, вы также можете воспользоваться посмотрите, какие надстройки у вас активны. Перейдите в Файл> Параметры> Надстройки и посмотрите, есть ли у вас какой-либо антивирусный плагин, который может помешать подключению к серверу. Если вы видите антивирусный плагин (например, Avast! Add-in ), нажмите кнопку Go рядом с Управление надстройкой COM- ins и снимите флажок рядом с плагином. Это должно предотвратить вмешательство антивирусного модуля в соединение с сервером.
Метод 4. Проверка помех от VPN
Если вы используете решение VPN для защиты своего веб-трафика и сохранения анонимности при просмотре веб-страниц в Интернете, вам может потребоваться чтобы проверить, не в этом ли причина проблемы. Некоторые пользователи сообщают, что обнаруживают, что их VPN-соединение препятствует обмену данными Outlook с почтовым сервером.
Вы можете легко проверить, так ли это, отключив сетевое соединение VPN и отправив электронное письмо через Outlook. Если электронное письмо было успешно отправлено, когда сеть VPN отключена, у вас есть два возможных пути вперед. Вы можете либо обратиться в службу поддержки сети VPN и попросить внести почтовый сервер в белый список, либо вообще искать другого поставщика VPN.
Сайт на последней версии Друпала. Установлен и настроен модуль SMTP Authentication Support (полгода уже как). Почта для домена — на Гугле.
Заметила, что вдруг перестали отправляться письма из формы обратной связи. Настройки не трогались. Посмотрела снова инструкции, зашла в аккаунт Гугла, в разделе Безопасность снова включила доступ для небезопасных приложений (Гугл периодически отключает его, как написано у него в справке), потом ещё перешла по ссылке accounts.google.com/DisplayUnlockCaptcha (тоже по инструкции) — но проблему это не решило.
Больше не знаю, что сделать. Почему вдруг сломалось — не пойму. Обновления уже давно сделала, работало до сих пор. Может Гугл на своей стороне что-то поменял? Пришло письмо, что будет переход на протокол Oauth, но это через год, а не прямо сейчас…
- Drupal8
- Есть вопрос
- Решение проблем
Лучший ответ
Включите в настройках модуля smtp отладочные сообщения. Возможно станет более понятно что происходит
Ошибка SMTP: не удалось подключиться к узлу SMTP. Сообщение не может быть отправлено.
Ошибка Mailer: ошибка SMTP: не удалось подключиться к узлу SMTP.
- отправка почты с использованием php и груши на окнах
- PHP: Как отправить электронную почту с вложением с помощью smtp-настроек?
- Ошибка SMTP: не удалось подключиться к SMTP-хосту
- Отказывающийся парсинг электронной почты
- Google App-Gmail Невозможно установить. Gmail, заменяющий адрес при отправке через SMTP-транспорт Swiftmailer (PHP)
Я не могу найти способ заставить PHPMailer работать в CentOS. Почта работает очень хорошо под Windows с XAMPP, но я всегда получаю эту ошибку под Linux.
SMTP-сервер является слушателем Lotus Domino на порту 25, у компьютера CentOS нет никакого брандмауэра, и странно, что даже почта () не работает. Он ничего не возвращает (в то время как в Windows возвращается 1). Если я отправлю электронное письмо через telnet через CentOS-сервер, он работает нормально, поэтому я не думаю, что это сетевая проблема. Это должно быть связано с PHP, но я не знаю, как это сделать.
<?php require("class.phpmailer.php"); $mail = new PHPMailer(); $mail->IsSMTP(); $mail->Host = "192.168.xx"; $mail->SMTPAuth = false; $mail->From = "xxx@xxx.it"; $mail->FromName = "XXX"; $mail->AddAddress("xxx@xxx.it"); $mail->IsHTML(true); $mail->Subject = "Test"; $mail->Body = "Test"; if(!$mail->Send()) { echo "Message could not be sent. <p>"; echo "Mailer Error: " . $mail->ErrorInfo; exit; } echo "Message has been sent"; ?>
Просто для уточнения кода выше работает на XAMPP (Windows).
Я отлаживал ошибку на PHPMailer, и здесь происходит ошибка (метод class.smtp.php Connect ()):
$this->smtp_conn = @fsockopen($host, // the host of the server $port, // the port to use $errno, // error number if any $errstr, // error message if any $tval); // give up after ? secs // verify we connected properly if(empty($this->smtp_conn)) { $this->error = array("error" => "Failed to connect to server", "errno" => $errno, "errstr" => $errstr); if($this->do_debug >= 1) { echo "SMTP -> ERROR: " . $this->error["error"] . ": $errstr ($errno)" . $this->CRLF . '<br />'; } return false; }
Похоже, он не может открыть Socket …
UPDATE: использование $ mail-> SMTPDebug = 2; как было предложено Альваро, произвел этот результат:
SMTP -> ОШИБКА: Не удалось подключиться к серверу: разрешено (13)
- Как настроить php.ini для использования gmail в качестве почтового сервера
- PHPMailer на сервере godaddy, правильно настройте?
- Могу ли я использовать gmail как smtp-сервер для своего веб-сайта
- PHPMailer Скрыть аутентификацию SMTP?
- Как настроить PHP для отправки электронной почты?
Вы можете включить режим отладки с SMTPDebug свойства SMTPDebug , например:
$mail = new PHPMailer(); // 1 = errors and messages // 2 = messages only $mail->SMTPDebug = 2;
Сообщения об ошибках будут отображаться на экране.
Обновить:
Разрешение, отклоняющее сообщение об ошибке с помощью fsockopen (), указывает на то, что пользовательский PHP работает, так как не разрешено открывать сокет. Если вы дважды проверили, что нет брандмауэра, возможно, это проблема SELinux : -?
ОС CentOS 6.3
Не удалось отправить электронные письма
после того, как некоторые reserch выяснили, что SELinux блокирует связь
SELinux активируется и настраивается по умолчанию. Поскольку SELinux не позволяет Apache (httpd, phpmailer) использовать функцию sendmail и делать какие-либо сетевые подключения.
Используя команду getsebool, мы можем проверить, разрешен ли демон httpd сделать подключение по сети и отправить электронное письмо.
getsebool httpd_can_sendmail getsebool httpd_can_network_connect
Эта команда возвращает логическое значение boolean. Если его выключить, мы можем установить его, используя следующее:
sudo setsebool -P httpd_can_sendmail 1 sudo setsebool -P httpd_can_network_connect 1
Теперь вы можете проверить свой php, код, чтобы увидеть, правильно ли работает SendMail или нет.