文章来源:合肥笑缘信息技术有限公司http://www.xyservice.com 如果转载,请注明出处,否则请勿转载,谢谢!
大家知道,虚拟主机因为其特殊性,Web服务的入门级产品有很多功能受到空间商的限制,比如某些服务商为了保证安全会禁用fsockopen和pfsockopen函数,但是这样一来,依赖fsockopen函数发邮件的phpcms就无法正常发送邮件了,合肥网站制作公司合肥笑缘信息技术有限公司教您如何解决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.如果以上几点都没问题,问问空间商,是不是连stream_socket_client函数也给禁用了,如果空间商连stream_socket_client函数也禁用了,好吧,别折腾了,估计空间商也不咋地,赶紧换空间商吧。