php - PHP SMTP服务器使用套接字: connection refused

标签 php sockets email

在我的个人项目之一中,我正在用PHP开发基本的SMTP服务器。当我从命令行单独启动它时,它就可以使用了。我可以通过telnet正确访问它,并且它可以正确响应SMTP命令,并且我也可以通过使用此服务器发送电子邮件的php脚本正确访问它。

现在,当我从php脚本而不是从命令行启动服务器时遇到问题(我使用exec函数来完成)。当我通过telnet访问服务器时服务器正确响应,但不再通过发送电子邮件的php脚本响应。

有人可以帮我吗?

注意

要从php脚本发送电子邮件,我使用Mail PEAR扩展名。当我从脚本中启动服务器并尝试以相同的过程发送电子邮件时,出现此错误:
SMTP: Failed to connect socket: Connection refused (code: -1, response: )
摘要

我的服务器实现是在server.php中,发送电子邮件的脚本是在mail-test.php中。

1)如果我通过以下方式在命令行上启动服务器:php server.php,然后启动php mail-test.php,则脚本将正常处理并发送电子邮件。我还可以通过telnet 127.0.0.1 3535访问服务器并与服务器正常通信。

2)使用另一个名为test.php的脚本,我想包装服务器管理,通过exec("php server.php > /dev/null 2>&1 &");启动服务器,然后从该脚本中一次发送邮件。这样做,服务器已正确启动(我可以通过telnet访问它),但是从test.php发送的电子邮件因此在服务器启动后引发了错误。如果我在终止test.php进程之前从另一个脚本发送了电子邮件,则电子邮件已正确发送...

我希望我足够明确。

最佳答案

奇怪的是,我通过设置SO_RCVTIMEO来解决此问题:
socket_set_option($sock, SOL_SOCKET, SO_RCVTIMEO, array('sec' => 0, 'usec' => 500))
我收到的错误消息并不是很有意义。

我希望它能帮助其他面临类似问题的人。

关于php - PHP SMTP服务器使用套接字: connection refused,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3684045/

相关文章:

php - 忘记了 PHP MySQL 的密码 URL token

python - 使用 Gmail API 从 Gmail 下载附件

ruby-on-rails - "Unsubscribe"用于通过 Sendgrid、Mailchimp、SES 的电子邮件类别/类型

spring - 收到来自 SMTP 主机 : smtp. yandex.ru、端口 : 465, 的错误问候响应:[EOF]] 与根本原因 Yandex

php - magento 大尺寸可下载产品无法下载

php - SQL 插入 Auto_Increment 列

python - python 中的recvmsg 相当于什么?

C++:客户端服务器通信:并非所有元素都使用套接字发送和接收

Java 多线程套接字服务器在获得约 50 个同时连接后挂起

php - 检查 key 存在于 redis 中的最快方法 - php