通过套接字连接到Gmail SMTP会返回每台服务器的不同响应

时间:2016-10-26 12:21:24

标签: sockets email ssl smtp gmail

我试图了解为什么通过SSL向Gmail服务器打开套接字会为不同的服务器提供不同的响应。这阻止我连接到Gmail以发送电子邮件。

下面是一个非常简单的脚本:

<?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证书]上,上述代码的输出为: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相同。

1 个答案:

答案 0 :(得分:0)

您获得SMTP欢迎消息的行。不同的服务器提供不同的欢迎消息是完全正常的。对您发送的命令的响应通常是不同的。这意味着在与SMTP服务器通信时,您不应将固定字符串视为响应,而是实现正确的SMTP解析。有关此协议的详细信息,请参阅the SMTP standard (RFC 2821)