Heim >Backend-Entwicklung >PHP-Tutorial >php无法用mail函数发送邮件之原因

php无法用mail函数发送邮件之原因

WBOY
WBOYOriginal
2016-07-29 09:03:38917Durchsuche

[导读]PHP 需要一个已安装且正在运行的邮件系统,以便使邮件函数mail()可用。所用的邮件系统程序通过在 php.ini 文件中进行设置。

用如下代码发送邮件,可总是发送失败。


[php] view plaincopyprint?
01.02.$to = "xxxxxxxx@qq.com"; 
03.$subject = "Test mail"; 
04.$message = "Hello! This is a simple email message."; 
05.mail($to,$subject,$message); 
06.?> 
经查,PHP 需要一个已安装且正在运行的邮件系统,以便使邮件函数mail()可用。所用的邮件系统程序通过在 php.ini 文件中进行设置。具体解决方法如下:
1.安装sendmail
sudo apt-get install sendmail
sudo apt-get install sendmail-cf
sudo apt-get install mailutils
2.配置sendmail
打开/etc/mail/sendmail.mc,找到如下行:
DAEMON_OPTIONS('Family=inet, Name=MTA-v4, Port=smtp, Addr=127.0.0.1')dnl
将127.0.0.1改为0.0.0.0
执行如下命令备份旧的配置文件,生成新的配置文件:
cd /etc/mail
mv sendmail.cf sendmail.cf~
m4 sendmail.mc > sendmail.cf
3.测试
echo "This is a test mail." | mail -s "test" xxxxxxxx@qq.com
注意:该邮件会被当作垃圾邮件接收,另外如果使用163邮箱可能会被直接过滤掉而无法收到。
4.配置php.ini文件
打开/etc/php5/apache2/php.ini,找到如下行:
; sendmail_path =
将该行改为:sendmail_path = /usr/sbin/sendmail -t

这里特别需要注意的是“-t"参数必不可少,如果缺少了它,当通过浏览器执行原php文件时,mail()函数会执行失败,但是如果直接在服务器端使用php命令行执行原php文件则不会出现问题。

5.重启apache
sudo /etc/init.d/apache2 restart


此时再次执行原php代码,邮件发送成功了。


以上就介绍了php无法用mail函数发送邮件之原因,包括了方面的内容,希望对PHP教程有兴趣的朋友有所帮助。

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn