我最近将Wordpress网站从一台服务器移动到另一台服务器,我无法再通过SMTP发送邮件。
显然存在一些网络/解析器/凭证问题,我正在尝试调试它,但我遇到了一些非常不寻常的行为。
我正在查看connect
类的SMTP
方法。如果我只是尝试代码,那么行
$this->smtp_conn = @stream_socket_client(
$host . ":" . $port,
$errno,
$errstr,
$timeout,
STREAM_CLIENT_CONNECT,
$socket_context
);
导致超时。但是,如果我添加自己的成员变量protected $myvariable;
并更改上面的代码以将流套接字分配给$myvariable
而不是smtp_conn
,则没有时间。
如果我在尝试打开连接之前使用var_dump
上的$this->smtp_conn
检查未更改的代码,则为NULL。
我在PHPMailer中看不到会影响成员变量$smtp_conn
的任何其他代码,我看不出如何更改变量名称可以停止超时。
任何人都可以帮助我进一步调试。
=================编辑=====================
我发现将$this->smtp_conn
分配给stream_socket_client
的结果会导致get_lines
方法直接执行。也就是说,如果我在exit
分配后直接发出$this->smtp_conn = stream_socket_client
命令,get_lines
中的代码仍会运行。