2016-10-26 2 views
0

Я пытаюсь понять, почему открытие сокета на сервере Gmail через SSL дает разные ответы для разных серверов. Это мешает мне подключиться к Gmail для отправки электронных писем.Подключение к Gmail SMTP через сокет возвращает разные ответы на сервер

Ниже приведен очень простой сценарий:

<?php 

$smtp_connect = fsockopen('ssl://smtp.googlemail.com', 465, 
    $errno, 
    $errstr, 
    300); 

var_dump(fgets($smtp_connect, 512)); 

?> 

На сервере 1 [не установлен SSL сертификат], выход выше код: string(57) "220 smtp.googlemail.com ESMTP s89sm726209qkl.44 - gsmtp "

на сервере 2 [SSL CERT установлен], вывод вышеуказанного кода: string(71) "220-mycompany.pro.com ESMTP Exim 4.87 #1 Wed, 26 Oct 2016 07:42:49 -0400 "

Может ли кто-нибудь объяснить, почему это происходит, и как заставить сервер 2 иметь такое же поведение, как и сервер 1?

Обновление: Я также пробовал smtp.gmail.com, выход такой же, как с использованием smtp.googlemail.com.

ответ

0

В строке вы получите приветственное сообщение SMTP. Совершенно нормально, что разные серверы предоставляют другое приветственное сообщение. Даже нормально, что ответ на команды, которые вы отправляете, отличается. Это означает, что при общении с SMTP-сервером вы не должны принимать фиксированные строки в качестве ответа, но осуществлять правильный анализ SMTP. См. the SMTP standard (RFC 2821) для получения подробной информации об этом протоколе.

+0

Спасибо, что помогает! –