【问题标题】:PHP's fsockopen() function problemPHP fsockopen() 函数问题
【发布时间】:2011-05-22 18:21:05
【问题描述】:

你好 :)
我对 PHP 的功能有疑问。我不明白为什么它不能工作,这对我的项目来说是个问题。

上下文:
我有 Joomla 并希望它通过“SMTP 服务器”选项发送电子邮件。它不起作用,返回“无法连接到 smtp 主机”。
我在谷歌搜索过这个问题,我发现的所有解决方案都对我不起作用。所以我决定进入代码看看发生了什么。当代码调用方法“fsockopen()”时,就会出现问题,这是一种内置的 PHP 方法。此方法表示与主机的连接超时。
有趣的地方:我可以在同一台机器上使用与邮件客户端 (Evolution) 完全相同的参数与该主机连接并发送电子邮件(所以这不是打开端口或其他问题的问题。

方法是:

fsockopen($host, $port, $errno, $errstr, $tval);  

使用的参数和返回的错误:

$host : ssl://smtp.laposte.net. 
$port : 25
$errno : 110
$errstr : Connection timed out
$tval : 10

一些技术信息:
PHP 版本:5.2.14
套接字支持:启用
操作系统:虚拟机下的 Ubuntu 10.10 (VMWare)
端口:端口 25 (smtp) 在虚拟机和虚拟机主机上打开。

如果有人知道此功能的工作原理以及无法连接的原因,那将对我有很大帮助,
在此先感谢,
达米安

【问题讨论】:

    标签: php smtp fsockopen


    【解决方案1】:

    我看到你正在使用 ssl...你在 php.ini 中启用了 OpenSSL 吗?

    如果安装了 OpenSSL 支持,您可以在主机名前加上 ssl:// 或 tls:// 以使用 SSL 或 TLS 客户端通过 TCP/IP 连接到远程主机。

    http://php.net/manual/en/function.fsockopen.php

    【讨论】:

    • 是的 :(。我有选项“--with-openssl”出现在 phpinfo()
    • 据我所知,ssl over smtp 的默认端口是 465,尝试使用它.. L.E.: 或尝试使用不带 ssl://的端口 25
    • 我要带着无尽的耻辱自缢了。但在我要感谢你之前,我的问题已经解决了\o/
    • 所以,更明确地说:我之前用谷歌的 smtp 尝试过这个端口(因为网站上有一个教程),它以同样的错误结束。所以我回到我测试的另一台服务器的 25 端口。但是,它适用于 laposte 服务器。再次感谢 Catalin :)
    猜你喜欢
    • 2013-07-16
    • 2018-06-25
    • 2017-06-13
    • 2016-01-18
    • 2011-08-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多