всем привет формы обратной связи на хостинге не отправляют письма, вернее они отправляются, но ip хостинга в блеклисте у почтовых серверов, и из- за этого все заявки не доходят. есть ли альтернатива для отправки через внешние сервера ? я попробовал этот способ http://fakir.name/mail-php-ssl/ PHP: <?phprequire_once "SendMailSmtpClass.php";$mailSMTP = new SendMailSmtpClass('[email protected]', '*****', 'ssl://smtp.gmail.com', 'Oleg', 465);// заголовок письма$headers= "MIME-Version: 1.0\r\n";$headers .= "Content-type: text/html; charset=utf-8\r\n"; // кодировка письма$headers .= "From: Oleg <[email protected]>\r\n"; // от кого письмо$result = $mailSMTP->send('[email protected]', 'gmail', 'Текст письма', $headers); // отправляем письмоif($result === true){ echo "Письмо успешно отправлено";}else{ echo "Ошибка отправки: " . $result;} но результат такой: Ошибка отправки: 110.Connection timed out помогите пожалуйста сделать отправку писем уведомлений с сайта ? из-за чего не отправляет - не понятно... ( яндекс суппорт yandex support vpn.dhcp.yndx.net
установил вебсервер на локалхосте, на нём оправка работает, а на хостинге нет это блокирует файрвол хостинга подключение. можно ли заставить работать этот скрипт через прокси ? или как то по другому обойти всё это ?
Можно использовать relay-сервер: https://ru.wikipedia.org/wiki/Релей Или напишите/скачайте реализацию SMTP-протокола через PHP-сокеты
wget github.com/PHPMailer/PHPMailer --no-check-certificate nano callback.php Code: <?php session_start(); error_reporting(E_ALL); ini_set('display_errors','On'); header("Content-Type: text/plain; charset=utf-8"); require('class.phpmailer.php'); include('class.smtp.php'); $mail = new PHPMailer(); $name = @ trim ($_POST['fullname']); $phone = @ trim ($_POST['phone']); #if ($name != "") { #$name = "неустановленного лица" #} if (!isset($_POST['fullname'])) {$name="неустановленного лица";} else {$name=@trim($_POST['fullname']);} $address = "hello@***"; $message = "ФИО: ".$name."\r\n Контакты: ".$phone."\r\n Заявка с сайта ***\r\n "; # проверка, переданы ли все данные if (! $name or ! $phone) exit ('Необходимо заполнить все поля, вернитесь!'); $mail->IsSMTP(); // telling the class to use SMTP $mail->Host = "smtp.yandex.ru"; // SMTP server $mail->SMTPDebug = "1"; // enables SMTP debug information (for testing) $mail->SMTPAuth = true; // enable SMTP authentication $mail->SMTPSecure = "ssl"; $mail->Port = "465";// set the SMTP port for the GMAIL\Yandex server $mail->Username = "<от-кого>@yandex.ru"; // SMTP account username $mail->Password = "<пароль-от-яндекса>";// SMTP account password $mail->From = "<от-кого>@yandex.ru"; $mail->FromName = "Бот ***"; $mail->AddReplyTo("no-reply@***", "Бот ***"); $mail->Subject= "Летим: письмо от ".$name.""; $mail->AltBody= "To view the message, please use an HTML compatible email viewer!"; $mail->MsgHTML($message); $mail->AddAddress($address, "Test"); if(!$mail->Send()) { echo "Mailer Error: " . $mail->ErrorInfo; } else { echo "Message sent!"; } ?> Передавать обычной формой POST запросом. Удачи