我想了解为什么通过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 回答
您获得SMTP欢迎消息的行 . 不同的服务器提供不同的欢迎消息是完全正常的 . 对您发送的命令的响应通常是不同的 . 这意味着在与SMTP服务器通信时,您不应将固定字符串视为响应,而是实现正确的SMTP解析 . 有关此协议的详细信息,请参见the SMTP standard (RFC 2821) .