海外服务器实现php网站调用smtp发送用户注册验证邮件

时间:2023-03-09 12:10:00 分类:建站知识 阅读:1252
摘要:太折腾了,原来海外云服务器装了centos7+后还得安装邮件服务....
海外服务器实现php网站调用smtp发送用户注册验证邮件

太折腾了,原来海外云服务器装了centos7+后还得安装邮件服务....给客户朋友做了个英文企业网站,需要用到注册用户邮箱验证功能,海外用户一般用gmail,那怎么实现Gmail能收到邮件呢?


网站是php语言的网站,因此用的是phpmailer的smtp功能,海外服务器装了centos7.0和海外版宝塔后,部署网站发现注册用户验证邮件一直无法发出去,提示“Mail delivery failed, please try again”,一直排查没发现原因。


然后想着是不是这centos7.0缺了啥,查了下,果然,mailx和postfix默认没装...


于是在宝塔上分别安装:

sudo yum install postfix


启动:

systemctl start postfix

systemctl enable postfix


继续安装:

sudo yum install mailx -y


安装好后,重启了下测试,用国内邮箱如qq、163等可以正常收到验证邮件了,但gmail还是无法收到,原因是qq邮箱收到的邮件显示为xxx主机代发,因此被gmail拒收了......

111.png

继续排查...


25端口是开了的;邮箱用的企业邮箱的smtp,在别的海外虚拟主机gmail正常接收验证邮件,为何放到centos7上就不行了呢?


使用PHPMailer发送邮件, 可能会出现Permission denied错误,如下:

2016-06-30 04:05:00 Connection: opening to smtp.exmail.qq.com:25, timeout=300, options=array ( ) 2016-06-30 04:05:04 SMTP ERROR: Failed to connect to server: Permission denied (13) 

2016-06-30 04:05:04 SMTP connect() failed.


因为selinux拒绝httpd服务发送邮件,可修改selinux的规则。


步骤如下:


1、使用下面的命令查看selinux的权限。


$ getsebool httpd_can_sendmail

    httpd_can_sendmail --> off

$ getsebool httpd_can_network_connect

   httpd_can_network_connect --> off


2、再使用下面的命令允许httpd发送邮件,问题得以解决!

$ setsebool -P httpd_can_sendmail 1

$ setsebool -P httpd_can_network_connect 1


修改了,也还是不行........


按这个方法,改smtp为SMTP也不行:https://blog.csdn.net/numcap1/article/details/82936568


最后找大佬排查了下,是sendmail函数调用问题,搞定了,记录一下。

声明:本文来自网友投稿,本站免一切责任,如有侵权,请联系小编删除。
链接:https://www.jin-you.com/news/1243.html

需要做网站还是小程序?

欢迎联系我们,我们可以提供企业网站建设、小程序开发、外贸独立站、商城建设等IT外包服务

您身边的【企业建站服务专家】

搜索千万次不如咨询1次

主营项目:各类网站建设,电商套图设计,小程序开发,外贸独立站建设等

立即咨询 158 155 17902
在线客服
嘿,我来帮您!