альтернатива phpmail

Discussion in 'PHP' started by dondy, 19 Nov 2015.

  1. dondy

    dondy Member

    Joined:
    5 Jun 2015
    Messages:
    560
    Likes Received:
    61
    Reputations:
    5
    всем привет
    формы обратной связи на хостинге не отправляют письма, вернее они отправляются, но ip хостинга в блеклисте у почтовых серверов, и из- за этого все заявки не доходят.

    есть ли альтернатива для отправки через внешние сервера ?

    я попробовал этот способ
    http://fakir.name/mail-php-ssl/

    PHP:
    <?php
    require_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
     
    #1 dondy, 19 Nov 2015
    Last edited: 7 Dec 2015
  2. dondy

    dondy Member

    Joined:
    5 Jun 2015
    Messages:
    560
    Likes Received:
    61
    Reputations:
    5
    установил вебсервер на локалхосте, на нём оправка работает, а на хостинге нет
    это блокирует файрвол хостинга подключение.
    можно ли заставить работать этот скрипт через прокси ? или как то по другому обойти всё это ?
     
    #2 dondy, 19 Nov 2015
    Last edited: 20 Nov 2015
  3. H@rd

    H@rd Member

    Joined:
    18 May 2015
    Messages:
    27
    Likes Received:
    21
    Reputations:
    1
    Можно использовать relay-сервер:
    https://ru.wikipedia.org/wiki/Релей

    Или напишите/скачайте реализацию SMTP-протокола через PHP-сокеты
     
  4. Gar|k

    Gar|k Moderator

    Joined:
    20 Mar 2009
    Messages:
    1,166
    Likes Received:
    266
    Reputations:
    82
    _________________________
  5. yarbabin

    yarbabin HACKIN YO KUT

    Joined:
    21 Nov 2007
    Messages:
    1,663
    Likes Received:
    916
    Reputations:
    363
    dkim?
     
    _________________________
  6. 5maks5

    5maks5 Elder - Старейшина

    Joined:
    29 Aug 2010
    Messages:
    451
    Likes Received:
    264
    Reputations:
    40
    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 запросом.
    Удачи :)
     
    dondy likes this.