鍍金池/ 問(wèn)答/PHP/ fsockopen 發(fā)送郵件

fsockopen 發(fā)送郵件

fsockopen('smtp.163.com', 25, '', '', 10);
本地運(yùn)行的時(shí)候是好的,可以發(fā)送郵件,放到線上就返回了false,沒(méi)有任何報(bào)錯(cuò),不知道原因在哪!
有沒(méi)有什么方法可以知道FSOCKOPEN返回false的原因,本人不是拿來(lái)主義,只要給個(gè)可能會(huì)出現(xiàn)的情況就行
回答
編輯回答
孤客

pfsockopen — 打開(kāi)一個(gè)持久的網(wǎng)絡(luò)連接或者Unix套接字連接。

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

從文檔中可以看出, int &$errnostring &$errstr 是引用類(lèi)型, 不能直接賦值。

在 PHP 5.6 / PHP 7.1.16 (cli) 執(zhí)行結(jié)果如下

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);
2017年4月2日 00:04
編輯回答
別硬撐

一般是關(guān)閉了25端口的,需要問(wèn)下你的服務(wù)商是否開(kāi)啟了25端口

2017年1月4日 11:21
編輯回答
厭遇
$handler = fsockopen('smtp.163.com', 26, $errcode, $errmsg, 10);
var_dump($errcode, $errmsg, $handler);
2018年1月13日 02:35