fsockopen 发送邮件

fsockopen('smtp.163.com', 25, '', '', 10);
本地运行的时候是好的,可以发送邮件,放到线上就返回了false,没有任何报错,不知道原因在哪!
有没有什么方法可以知道FSOCKOPEN返回false的原因,本人不是拿来主义,只要给个可能会出现的情况就行
阅读 2.5k
3 个回答

一般是关闭了25端口的,需要问下你的服务商是否开启了25端口

$handler = fsockopen('smtp.163.com', 26, $errcode, $errmsg, 10);
var_dump($errcode, $errmsg, $handler);

pfsockopen — 打开一个持久的网络连接或者Unix套接字连接。

resource fsockopen ( string $hostname [, int $port = -1 [, int &$errno [, string &$errstr [, float $timeout = ini_get("default_socket_timeout") ]]]] )

从文档中可以看出, int &$errnostring &$errstr 是引用类型, 不能直接赋值。

在 PHP 5.6 / PHP 7.1.16 (cli) 执行结果如下

Fatal error: Only variables can be passed by reference in xxx.php on line 2

修改后代码如下

<?php
$res = fsockopen('smtp.163.com', 25, $errno, $errmsg, 10);

var_dump($errno, $errmsg);
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题