Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: 10060.A connection attempt failed because the connected party did not properly respond after a period of time
Форумы портала PHP.SU » » Работа с сетью » 10060.A connection attempt failed because the connected party did not properly respond after a period of time

Страниц (1): [1]
 

1. PickUp - 12 Сентября, 2014 - 13:48:58 - перейти к сообщению
Сайт залит на сервер, с него пытаюсь отправить сообщение на emale
Выдаёт такую ошибку: 10060.A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond.

Ниже код:
CODE (htmlphp):
скопировать код в буфер обмена
  1. <?
  2. ini_set('display_errors', 1);
  3.  error_reporting(E_ALL);
  4.  
  5. // пример использования
  6. require_once "SendMailSmtpClass.php"; // подключаем класс
  7.  
  8. $mailSMTP = new SendMailSmtpClass('логин', 'пароль', 'хост', 'имя отправителя');
  9.  
  10. // заголовок письма
  11. $headers= "MIME-Version: 1.0\r\n";
  12. $headers .= "Content-type: text/html; charset=utf-8\r\n"; // кодировка письма
  13. $headers .= "From: Evgeniy <admin@vk-book.ru>\r\n"; // от кого письмо
  14. $result =  $mailSMTP->send('trol@gmail.com', 'Тема письма', 'Текст письма jeiorjf eoijhf;aoiejr f;aoeigh auoghruaehrgurhguh 32 4 234 2thurv rvhur fu', $headers); // отправляем письмо
  15. // $result =  $mailSMTP->send('Кому письмо', 'Тема письма', 'Текст письма', 'Заголовки письма');
  16. if($result === true){
  17.    echo "Письмо успешно отправлено";
  18. }else{
  19.    echo "Письмо не отправлено. Ошибка: " . $result;
  20. }
  21. ?>


sendmaulsmtp:
CODE (htmlphp):
скопировать код в буфер обмена
  1. <?php
  2. ini_set('display_errors', 1);
  3.  error_reporting(E_ALL);
  4. /**
  5. * SendMailSmtpClass
  6. *
  7. * Класс для отправки писем через SMTP с авторизацией
  8. *
  9. * @author Ipatov Evgeniy <admin@ipatov-soft.ru>
  10. * @version 1.0
  11. */
  12. class SendMailSmtpClass {a
  13.  
  14.    /**
  15.     *
  16.     * @var string $smtp_username - логин
  17.     * @var string $smtp_password - пароль
  18.     * @var string $smtp_host - хост
  19.     * @var string $smtp_from - от кого
  20.     * @var integer $smtp_port - порт
  21.     * @var string $smtp_charset - кодировка
  22.     *
  23.     */  
  24.    public $smtp_username;
  25.    public $smtp_password;
  26.    public $smtp_host;
  27.    public $smtp_from;
  28.    public $smtp_port;
  29.    public $smtp_charset;
  30.    
  31.    public function __construct($smtp_username, $smtp_password, $smtp_host, $smtp_from, $smtp_port = 25, $smtp_charset = "utf-8") {
  32.        $this->smtp_username = $smtp_username;
  33.        $this->smtp_password = $smtp_password;
  34.        $this->smtp_host = $smtp_host;
  35.        $this->smtp_from = $smtp_from;
  36.        $this->smtp_port = $smtp_port;
  37.        $this->smtp_charset = $smtp_charset;
  38.    }
  39.    
  40.    /**
  41.     * Отправка письма
  42.     *
  43.     * @param string $mailTo - получатель письма
  44.     * @param string $subject - тема письма
  45.     * @param string $message - тело письма
  46.     * @param string $headers - заголовки письма
  47.     *
  48.     * @return bool|string В случаи отправки вернет true, иначе текст ошибки    *
  49.     */
  50.    function send($mailTo, $subject, $message, $headers) {
  51.        $contentMail = "Date: " . date("D, d M Y H:i:s") . " UT\r\n";
  52.        $contentMail .= 'Subject: =?' . $this->smtp_charset . '?B?'  . base64_encode($subject) . "=?=\r\n";
  53.        $contentMail .= $headers . "\r\n";
  54.        $contentMail .= $message . "\r\n";
  55.        
  56.        try {
  57.            if(!$socket = @fsockopen($this->smtp_host, $this->smtp_port, $errorNumber, $errorDescription, 30)){
  58.                throw new Exception($errorNumber.".".$errorDescription);
  59.            }
  60.            if (!$this->_parseServer($socket, "220")){
  61.                throw new Exception('Connection error');
  62.            }
  63.        
  64.            fputs($socket, "HELO " . $this->smtp_host . "\r\n");
  65.            if (!$this->_parseServer($socket, "250")) {
  66.                fclose($socket);
  67.                throw new Exception('Error of command sending: HELO');
  68.            }
  69.            
  70.            fputs($socket, "AUTH LOGIN\r\n");
  71.            if (!$this->_parseServer($socket, "334")) {
  72.                fclose($socket);
  73.                throw new Exception('Autorization error 1');
  74.            }
  75.            
  76.            fputs($socket, base64_encode($this->smtp_username) . "\r\n");
  77.            if (!$this->_parseServer($socket, "334")) {
  78.                fclose($socket);
  79.                throw new Exception('Autorization error 2');
  80.            }
  81.            
  82.            fputs($socket, base64_encode($this->smtp_password) . "\r\n");
  83.            if (!$this->_parseServer($socket, "235")) {
  84.                fclose($socket);
  85.                throw new Exception('Autorization error 3');
  86.            }
  87.            
  88.            fputs($socket, "MAIL FROM: ".$this->smtp_username."\r\n");
  89.            if (!$this->_parseServer($socket, "250")) {
  90.                fclose($socket);
  91.                throw new Exception('Error of command sending: MAIL FROM');
  92.            }
  93.            
  94.            fputs($socket, "RCPT TO: " . $mailTo . "\r\n");    
  95.            if (!$this->_parseServer($socket, "250")) {
  96.                fclose($socket);
  97.                throw new Exception('Error of command sending: RCPT TO');
  98.            }
  99.            
  100.            fputs($socket, "DATA\r\n");    
  101.            if (!$this->_parseServer($socket, "354")) {
  102.                fclose($socket);
  103.                throw new Exception('Error of command sending: DATA');
  104.            }
  105.            
  106.            fputs($socket, $contentMail."\r\n.\r\n");
  107.            if (!$this->_parseServer($socket, "250")) {
  108.                fclose($socket);
  109.                throw new Exception("E-mail didn't sent");
  110.            }
  111.            
  112.            fputs($socket, "QUIT\r\n");
  113.            fclose($socket);
  114.        } catch (Exception $e) {
  115.            return  $e->getMessage();
  116.        }
  117.        return true;
  118.    }
  119.    
  120.    private function _parseServer($socket, $response) {
  121.        while (@substr($responseServer, 3, 1) != ' ') {
  122.            if (!($responseServer = fgets($socket, 256))) {
  123.                return false;
  124.            }
  125.        }
  126.        if (!(substr($responseServer, 0, 3) == $response)) {
  127.            return false;
  128.        }
  129.        return true;
  130.        
  131.    }
  132. }


Единственное - не уверен в порте, но техподдержка молчить.
Подскажите, что за фигня может быть?
Адрес сервера точно правильный, даже пинговать пробовал с компа - средний отклик 20 мс.
2. Мелкий - 12 Сентября, 2014 - 14:19:44 - перейти к сообщению
Строка-то какая? 58?
Хост не отвечает за время таймаута.

PickUp пишет:
Адрес сервера точно правильный, даже пинговать пробовал с компа - средний отклик 20 мс.

Не буду углубляться в вопрос, что на пинги может отвечать даже физически другая машина, но одного адреса сервера мало, чтобы открыть TCP-сокет. Должен быть номер порта, и по этому хосту и номеру порта должен кто-то ждать подключение.

Кратко говоря, используйте mail, раз всё равно сами форматируете письмо.
3. PickUp - 15 Сентября, 2014 - 10:23:02 - перейти к сообщению
Мелкий пишет:
Строка-то какая? 58?
Хост не отвечает за время таймаута.

PickUp пишет:
Адрес сервера точно правильный, даже пинговать пробовал с компа - средний отклик 20 мс.

Не буду углубляться в вопрос, что на пинги может отвечать даже физически другая машина, но одного адреса сервера мало, чтобы открыть TCP-сокет. Должен быть номер порта, и по этому хосту и номеру порта должен кто-то ждать подключение.

Кратко говоря, используйте mail, раз всё равно сами форматируете письмо.


Mail() использовать уже пробовал, выдаёт ошибку: Warning: mail() [function.mail]: SMTP server response: 503 This mail server requires authentication when attempting to send to a non-local e-mail address. Please check your mail client settings or contact your administrator to verify that the domain or address is defined for this server.

Тех поддержка сказала, что такая шляпа из-за размещения на разных серверах сайта и почты, так они и порекомендовали подключаться.
Порт узнал - действительно 25-й, или можно 587.
Но и по тому и по этому порту ошибка 10060.
Что вообще с этим делать? Можно как-то ожидание ответа увеличить или что-то в этои духе?)

 

Powered by ExBB FM 1.0 RC1