phpmailer发送邮件失败

在用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地址,一定要是域名。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值