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