PHPmailer配置SMTP的各种折腾

最近打算更换博客邮件的通知的帐号和密码,一直使用QQ的邮箱作为发件邮箱(设置了域名邮箱)通过phpmailer来发送各种邮件,但是密码是常用QQ密码有点不安全,所以换个QQ号绑定域名邮箱作为新的发件邮箱,随后各种问题来了,折腾了好久终于解决了。


使用sendmail插件(二次开发过的),不要纠结我过程中的一些设置。

1、换个QQ邮箱出现SMTP Error: Could not authenticate 错误。

报错中会有这个QQ邮箱客户端设置的帮助网站http://service.mail.qq.com/cgi-bin/help?id=28

从此面了解到:新的QQ邮箱只有使用安全连接SSL才可以。(QQ一些等级高的和QQ邮箱这些服务器开通很久的用户除外)一般看到报错信息中有上面这个网址,要么邮箱后台没有开启smtp发件,要么需要使用SSL安全连接。

那么也就了解到必须使用SSL连接了,由于二次开发过插件,早就把SSL和TLS,以及一般的连接模式作为选项集成在插件上了。


2、使用安全连接SSL还是报错SMTP->ERROR: Failed to connect to server

SMTP NOTICE: EOF caught while checking if connected SMTP connect() failed

注:但是本地环境(win)测试可以发件,但是服务器环境(centos)报错。

本地正常说明用户名,密码都没错,设置也没错,是服务器的设置问题。测试了不同的邮箱也是这个问题,确定了是服务器的问题。

联系服务商明确给我了答案,这个是ipv6引起的,已知PHP BUG(至少5.3.2之前)。当然也给我了解决办法,把邮件服务器域名换成IP地址。


之后测试就可以正常使用了。
  • 下载列表

目前有 2 条评论

avatar

骚气的卡卡西  2017-10-18 17:34 1楼

这个问题我和大多数人一样折腾,网上说的每种方法我都试过,包括什么openssl,什么stmp端口,什么账号密码是否正确。。。
这些都试过之后仍然没有效果,然后我偶然间进入邮箱‘设置中心‘(就是你发件人的邮箱),发现没有开启POP3/SMTP/AMAP,尝试性的开启了,这里会生成一个类似‘客户端授权码’,然后把这个授权码代替调用phpMailer时的password,这个时候,电脑屏幕右下角弹出了期待已久的‘新邮件提示框’,顿时热泪盈眶。
总之,要用你的邮箱作为发件人调用phpMailer时,一定要确定这个邮箱是否设置了POP3/SMTP/AMAP。希望对你有帮助 回复
avatar

星之宇  2017-10-18 20:32

@骚气的卡卡西:你这个授权码出来没多久,2014年的时候还没这个东西。现在QQ邮箱正常多了 回复
昵称
邮箱
主页
提交
订阅