空间商关闭fsockopen和pfsockopen函数导致phpcms 无法发送邮件的解决办法

大家知道,虚拟主机因为其特殊性,Web服务的入门级产品有很多功能受到空间商的限制,比如某些服务商为了保证安全会禁用fsockopen和pfsockopen函数,但是这样一来,依赖fsockopen函数发邮件的phpcms就无法正常发送邮件了,我们用到stream_socket_client这个函数,替换原来的函数,

第一步:打开文件phpcms/libs/functions/mail.func.php

第二步:找到下面这段代码(大概在第78行附近)

 

if(!$fp = fsockopen($mail['server'], $mail['port'], $errno, $errstr, 30)) { 

    runlog('SMTP', "($mail[server]:$mail[port]) CONNECT - Unable to connect to the SMTP server", 0);

    return false;

 

第三步:将fsockopen($mail['server'],$mail['port'], $errno, $errstr, 30)替换为下面的代:stream_socket_client($mail['server'].':' .$mail['port'], $errno, $errstr, 30)  

 

第四步:保存,到这里,应该就可以发送邮件了,如果还是不行,请检查以下两点原因:

1.smtp服务器配置是否正确,用户名密码是否正确

2.邮件服务商是否允许远程发送邮件,邮箱是否开通了smtp服务(QQ邮箱默认就是关闭的),另外QQ邮箱需要设置独立密码并开通SMTP服务才可以远程调用。

3.如果以上几点都没问题,问问空间商吧。