万网等虚拟主机不能发送邮件的解决方法

2016年3月23日 建站技术 浏览 4,421 抢沙发 A+

大多数虚拟主机提供商如万网等出于安全的考虑都禁用了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加密的方式发信。

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: