通过套接字连接到 Gmail SMTP returns 每个服务器的不同响应
Connecting to Gmail SMTP via socket returns different responses per server
我想了解为什么通过 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
相同。
您收到 SMTP 欢迎消息的行。不同的服务器给出不同的欢迎信息是完全正常的。对您发送的命令的响应不同甚至是正常的。这意味着当与 SMTP 服务器通信时,您不应假定固定字符串作为响应,而应实施正确的 SMTP 解析。有关此协议的详细信息,请参阅 the SMTP standard (RFC 2821)。
我想了解为什么通过 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
相同。
您收到 SMTP 欢迎消息的行。不同的服务器给出不同的欢迎信息是完全正常的。对您发送的命令的响应不同甚至是正常的。这意味着当与 SMTP 服务器通信时,您不应假定固定字符串作为响应,而应实施正确的 SMTP 解析。有关此协议的详细信息,请参阅 the SMTP standard (RFC 2821)。