虽然之前成功将项目部署到了阿里云上,但是由于环境的不同,依旧会出现一些问题。
现在大部分的服务器都会禁用25端口,因为开启25端口的话会导致垃圾邮件数量的增加,但是我们的项目在本地时通常是利用25端口进行发送的,于是部署到服务器上你就会发现邮件无法发送,查看nginx的错误日志,它也会告诉你,邮件发送超时。
对于这个问题,暂时有两种解决方法,而且服务器文档中也有明确说明
方法一:申请解封
去控制台中申请对25端口进行解封,先点击自己的头像,选择安全管控。
然后找到业务申请中的25端口解封。
最后进行端口解封申请即可,但是这个方法成功率并不高,而且等待时间很久。
方法二:改用ssl加密的465端口发送
在申请25端口解封的时候,你会看到如下提示。
于是我们知道了,可以通过把发送端口改为465的形式,避过25端口被封的问题。
以我自己的项目为例,我是用smtp进行发送的,具体的方法实现,是从网上找了一个封装好的类。
他实例化的对象以及发送方法如下图所示。
$smtp = new Smtp($MailServer, $MailPort, $smtpuser, $smtppass, true);
五个参数分别为发送邮件的邮箱服务器(如email.qq.com),发送端口,发送邮件的邮箱账号,
开启smtp服务时设置的密码,以及是否需要身份验证。
$smtp->sendmail($uemail, $smtpMail, $emailTitle, $emailBody, $mailType);
五个参数分别为目标邮箱,发送邮箱,邮件标题,邮件主体,邮件类型(通常为html)。
主要是对$MailServer,以及¥MailPort两个参数进行了修改
修改前
$MailServer = "smtp服务器";如smtp.email.qq.com
$MailPort = 25;
修改后
$MailServer = "ssl:// 服务器";
$MailPort = 465;
这样,就可以在服务器端对邮件进行正常发送了。