大多数虚拟主机提供商如万网等出于安全的考虑都禁用了PHP mail()函数,使得邮件功能无法正常使用。这时我们就考虑使用SMTP的方式发信,SMTP的好处是基本不会被邮件服务商归类为垃圾邮件。但是由于stream_socket_client函数同样被禁用,导致我们也无法通过SMTP方式发送邮件。
对此阿里云给出了解决方法,那就是可以使用fsockopen的方式发送邮件。并给出了虚拟主机PHP程序使用fsockopen方式发信代码样例https://help.aliyun.com/knowledge_detail/6554970.html以wordpress为例,如果你在万网(阿里云)买的主机,并且装了wordpress程序,想正常使用邮件功能,可以按如下方法操作:
首先要保证在虚拟主机控制台开启了fsockopen函数。
再者,打开wp-includes/class-smtp.php文件,大约202行找到:
$this->smtp_conn = @stream_socket_client( $host . ":" . $port, $errno, $errstr, $timeout, STREAM_CLIENT_CONNECT, $socket_context );
将上述代码删除或注释掉,改为以下代码:
$this->smtp_conn = fsockopen($host, $port, $errno, $errstr);
修改之后即可通过安装SMTP插件发送邮件,注意的是尽量选择SSL加密的方式发信。