邮件配置及发送失败的解决方案
目录
PESCMS系列软件都基本配备了邮件通知功能。考虑到不是所有人都会搭建邮件服务器,PESCMS系列软件都以smtp形式发送的。所以要使用PESCMS的邮件通知功能,您需要确保您手头的邮箱账号支持smtp发送。下面我整理了一下常用邮箱的SMTP帮助文档:
腾讯邮箱:http://service.exmail.qq.com/cgi-bin/help?subtype=1&&no=1001254&&id=28
网易邮箱:http://help.163.com/09/1223/14/5R7P3QI100753VB8.html
阿里云邮:http://mailhelp.aliyun.com/freemail/detail.vm?knoId=5869705
Gmail: https://support.google.com/a/answer/176600?hl=zh-Hans
邮件触发模式
邮件触发模式有三种选择,分别为:被动模式、定时触发、两者兼有。
被动模式:顾名思义即只有用户访问程序的时候,程序会检查是否存在待发送的邮件。有则执行发送邮件动作。
定时触发:即利用系统的定时器(WIN系统为计划任务,Linux为:Cron)操作邮件发送。选用此方式需要使用者掌握一定的操作系统维护经验。
在某些PESCMS旧版中,定时触发邮件位于:Expand/Cli/SendMail.php中。
而在新版起,将会统一为:Expand/Cli/SendNotice.php。
两者兼有:将被动和定时结合起来。满足大家即需要实时发送和定时发送的需求。
邮件发送失败常见问题
问:邮件发送不了。如何解决?
答:请确认您的发送账号是否已经开启 smtp协议。若已开启,请参照下方参数逐一排查。
邮箱发送端口依次设置为 25、587尝试。
检查服务器是否屏蔽了上述端口
检查当前PHP环境是否安装了 curl、openssl扩展。
安装邮箱客户端软件,如Foxmail,尝试使用当前账号进行发送邮件。确保账号无误。
问:已经确保邮箱账号能够发送,但程序依旧发送不了。
答:定位到 Expand/Notice/Mail.class.php。在$this->PHPMailer->isSMTP(); 下起一行添加如下代码
$this->PHPMailer->SMTPDebug = 2;
上述操作为开启PHPMailer库的调试模式。执行程序邮件发送动作。观察程序返回的错误,进行排查。
问:调试模式返回“stream_socket_enable_crypto(): SSL operation failed with code 1. OpenSSL Error messages:”
测试邮件发送
部分PESCMS系列软件 在系统设置中(即您填写邮件服务信息的地方),已经添加专门用于测试邮件发送的功能。如下图所示:
若您的邮件配置信息填写正确,但是一直发送失败,请使用此功能进行调试分析。在测试邮件过程,系统会将发送邮件的详细过程打印出来,您可以依据打印出来的信息查找解决失败的原因。
常见邮件服务商地址
网易:
smtp.163.com
smtp.126.com腾讯:
smtp.qq.com阿里云:
smtp.mxhichina.com新浪:
smtp.sina.com搜狐
mail.sohu.net谷歌:
smtp.gmail.com
其他的邮件服务商请自行咨询服务商。