phpmailer发送邮件失败

来源:互联网 发布:烈焰遮天全套源码 编辑:程序博客网 时间:2024/04/29 06:32

在用phpmailer发送邮件时,本地都是好的,到服务器上就不行了,提示发送成功,但受不到邮件,firebug查看提示连接不上邮件服务器。在网上找了很久,最多的说法是这样:

更改phpmailer的class.smtp.php文件:

$this->smtp_conn = @fsockopen( $host,  // the host of the server                 $port,  // the port to use                 $errno,  // error number if any                 $errstr, // error message if any                 $tval);  // give up after ? secs

改为:

$this->smtp_conn = @stream_socket_client( $host.':'.$port,  // the host of the server                 $errno,  // error number if any                 $errstr, // error message if any                 $tval);  // give up after ? secs

PHP版本应高于5.0,因为较早版本没有stream_socket_client函数。

按照上面改了,还是不行,然后对phpmailer一步步跟踪,发现问题还是出在连接163邮件服务器这里,在测试服务器上运行也正常,然后就将测试环境和生产环境比较,发现唯一的区别就是测试服务器是用域名访问的,而生产环境是用IP地址访问的,改成域名访问就正常了,至于为什么IP地址就不行,这就不知道了。反复测试后发现,生产环境的域名解析有点问题,有时会自动将URL中的域名转换IP地址。

总结一下邮件发送失败的几种原因:

1、SSL连接,有些邮件不需要SSL,如163,;有些需要,如gmail;

2、端口,163邮箱的端口是25,具体端口号应和你使用的邮箱一致;

3、fsockopen函数,按照上面方法改成stream_socket_client;

4、URL中的地址是域名还是IP地址,一定要是域名。

0 0
原创粉丝点击