PHP5.6下阿里云服务器(wamp)无法发送邮件(SMTP)整理

最近公司项目升级,将项目由自己服务器移植到阿里云服务器上,同时将PHP版本由5.4升级到5.6,其中有用到PHPmailer来发送邮件,使用SMTP协议,但升级后一直无法连接SMTP服务器,后经过多次排查,总算解决,特记录一下(如有不足,欢迎批评指正):

排查过程 :

1、查看PHP是否开启sockets和openssl扩展,可通过phpinfo()查看:
在这里插入图片描述
在这里插入图片描述
2、 查看allow_url_fopen是否打开:
在这里插入图片描述
如果未开启,则在php.ini中打开allow_url_fopen = On,并重启服务器。

3、查看禁用函数:

disable_functions= pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,
中是否禁用了fsockopen ()pfsockopen() 以及 stream_socket_client() 三个函数。

4、查看防火墙:

#sestatus -b | grep httpd

5、查看httpd_can_sendmail是不是打开的,没有的话用命令打开:

setsebool -P httpd_can_sendmail on
setsebool -P httpd_can_network_connect on

6、检查端口是否被占用:

SMTP的默认端口是25,检查未被占用,后查询说阿里云默认关闭25端口,然后改用465端口 (一定要在安全组规则内打开此端口),但依旧无法连接。
注:465端口(SMTPS):465端口是为SMTPS(SMTP-over-SSL)协议服务开放的,这是SMTP协议基于SSL安全协议之上的一种变种协议,它继承了SSL安全协议的非对称加密的高度安全可靠性,可防止邮件泄露。

7、关闭SSL证书验证:

因为PHP 5.6引入了SSL证书验证,因此如果您的配置中断,则会显示错误,此时可修改SMTPOptions为不验证:

$mail->SMTPOptions = array(
				'ssl' => array(
						'verify_peer' => false,
						'verify_peer_name' => false,
						'allow_self_signed' => true
				)
		);

在关闭SSL验证后,邮件发送成功。

8、连接代码:

		$mail = new PHPMailer;
		$mail->isSMTP();                                      
		$mail->Host = $arrSmtpinfo['server']; 					   //smtp 服务器信息
		$mail->SMTPAuth = true;                              
		$mail->Username = $arrSmtpinfo['sender'];            // 发件人
		$mail->Password = $arrSmtpinfo['sender_pwd'];        // 发件人 密码
		$mail->SMTPSecure = 'ssl';                            //一定要开启
		$mail->Port =465;                                    //  端口
		
		$mail->setFrom($arrSmtpinfo['sender'], 'Mailer');	//发件人
		$mail->addAddress($strEmail, '');        // 收件人
		$mail->addAddress($strEmail);           
		$mail->addCC($strEmail);
		$mail->addAttachment('********');         // 添加附件
		$mail->isHTML(true);                                  // HTML
		
		$mail->Subject = '***********'; 	           //主题
		$mail->Body    = '************** ';    //邮件内容
		$mail->AltBody = '*************************';
		
		if($mail->send()) {
			echo “success”;
		}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值