Linux下phpmailer发送邮件失败怎么解决?
程序员文章站
2022-05-18 21:45:53
...
解决方法:1、开启sockets和openssl扩展;2、打开php.ini,设置“allow_url_fopen=On”;3、查看防火墙,开启httpd_can_sendmail;4、查看25端口是否被占用,如果被占用则换成465端口。
Linux服务器下PHPMailer发送邮件失败问题的解决
最近在做一个项目,其中有用到PHPmailer来发送邮件,在本地测试好后,上传到线上,邮件发送失败。用的是SMTP协议,本地用的是wamp环境,线上用的是lamp环境。于是就进行一系列的排查。
排查过程
这种方式首先PHP要开启sockets扩展,以及openssl。
1、查看php扩展
#php -m
发现是开启的
2、 然后打开php.ini,查看allow_url_fopen
allow_url_fopen = On
没问题,是开启的。再查看是不是禁用函数了
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()函数并没有被禁用。
3、查看防火墙
#sestatus -b | grep httpd
查看httpd_can_sendmail与是不是打开的,没有的话用命令打开
setsebool -P httpd_can_sendmail onsetsebool -P httpd_can_network_connect on
4、接着排查端口是不是被占用了,因为SMTP的默认端口是25。
端口被占用了,既然25端口不可用,于是我想,是否可以尝试一下其它端口,用465端口试试。
465端口(SMTPS):465端口是为SMTPS(SMTP-over-SSL)协议服务开放的,这是SMTP协议基于SSL安全协议之上的一种变种协议,它继承了SSL安全协议的非对称加密的高度安全可靠性,可防止邮件泄露。SMTPS和SMTP协议一样,也是用来发送邮件的,只是更安全些,防止邮件被黑客截取泄露。
修改程序如下,
$mail = new PHPMailer(); $mail->SMTPSecure = 'ssl'; $mail->Port = 465;
执行,发送邮件成功!终于解决了,特记录一下。
更多相关知识,请访问 PHP中文网!!
推荐阅读
-
linux下phpmailer发送邮件出现SMTP ERROR: Failed to connect to server: (0)错误
-
关于phpmailer邮件发送失败以及解决办法
-
详细介绍Linux服务器下PHPMailer发送邮件失败的问题解决
-
Linux下phpmailer发送邮件失败怎么解决?
-
linux下phpmailer发送邮件出现SMTP ERROR: Failed to connect to server: (0)错误
-
详细介绍Linux服务器下PHPMailer发送邮件失败的问题解决
-
Linux服务器下PHPMailer发送邮件失败的问题解决的技巧
-
怎么解决linux下php mkdir失败的问题
-
Linux服务器下PHPMailer发送邮件失败的问题解决的技巧
-
怎么解决linux下php mkdir失败的问题