几天以来,我一直在尝试在我新安装的 Ubuntu 服务器上通过 fsockopen() 在 PHP 中建立到 SMTP 服务器的 TLS 连接。我几乎尝试了所有方法并在谷歌上搜索了几个小时,但我仍然无法正常工作。
PHP 代码如下所示:
$fp = fsockopen("tls://smtp.xxxx.com", 25, $errno, $errstr, 30);
if (!$fp) {
echo "$errstr ($errno)<br />\n";
} else {
// some other stuff
}
输出只是 (0),即 $errstr = null 和 $errno = 0。
OpenSSL 已安装并启用:
OpenSSL support: enabled
OpenSSL Library Version: OpenSSL 0.9.8o 01 Jun 2010
OpenSSL Header Version: OpenSSL 0.9.8o 01 Jun 2010
并且注册了以下流套接字传输: tcp、udp、unix、udg、ssl、sslv3、sslv2、tls。
该端口作为控制台的 telnet 打开。
知道哪里出了问题,或者我至少可以如何获得更多调试输出?
谢谢, 马库斯
最佳答案
你的联系没有多大意义。通过使用 TLS 处理程序,您希望在传输任何数据之前建立 TLS。但是端口 25 是标准的 SMTP,它只能在您最初通过未加密的常规连接建立连接后之后建立 TLS。建立初始连接后,您可以使用 STARTTLS
命令启用 TLS,以告知 SMTP 服务器进行切换。
如果您一开始就想要 TLS,请使用端口 465,从一开始就是 ssl/tls。
关于php - 无法通过 fsockopen 在 PHP 中建立 TLS 连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6708187/