最近在成都网站建设公司创新互联在做一个项目的时候,使用到了phpmailer组件来向客户发送邮件信息,phpmailer在本地测试正常,但是上传到万网主机邮件发送失败的原因一直没有找到。为了探究是主机的原因还是php组件的问题,把整个程序又全部上传到阿里云服务器ecs上,结果运行成功测试正常,这就说明是万网虚拟主机的问题,或者某些函数不支持造成的。
首先,进入虚拟主机控制面板,找到高级环境设置中的php.ini设置,将其中的PHP函数fsockopen设置改为启用,并重启服务器。
其次,将class.phpmailer.php中的出现smtp的文本字段的全部改为大写“SMTP”,减少一切可能出现问题的现象。
最后,就是将以下代码
$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 connect() failed的的原因大多数情况还是因为函数不支持和开启的问题。通过以上操作就可以通过虚拟主机轻松发送邮件了,解决方案是不是很简单,赶快去操作修改吧。