一起源码网

  • www.171739.xyz
  • 全球最大的互联网技术和资源下载平台
搜索
猜你喜欢
查看: 4547|回复: 1
打印 上一主题 下一主题

php无法使用mail函数原因分析及解决方法

[复制链接]

0

主题

0

帖子

1万

积分

钻石会员

Rank: 8Rank: 8

积分
17424
QQ
跳转到指定楼层
楼主
发表于 2020-3-8 23:30 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
PHP 需要一个已安装且正在运行的邮件系统,以便使邮件函数mail()可用。所用的邮件系统程序通过在 php.ini 文件中进行设置。

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

[PHP] view plaincopyprint?

<?php  
$to = "xxxxxxxx@qq.com";  
$subject = "Test mail";  
$message = "Hello! This is a simple email message.";  
mail($to,$subject,$message);  
?>

经查,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


此时再次执行原,成功了。

分享到:  QQ好友和群QQ好友和群
收藏收藏
回复

使用道具 举报

0

主题

10

帖子

32

积分

新手上路

Rank: 1

积分
32
沙发
发表于 2022-9-4 14:15 | 只看该作者
开源 app
回复

使用道具 举报

一起源码让程序更轻更快

www.171739.xyz

工作时间 周一至周六 8:00-17:30

侵权处理

客服QQ点击咨询

关注抖音号

定期抽VIP

Copyright © 2016-2021 https://www.171739.xyz/ 滇ICP备13200218号

快速回复 返回顶部 返回列表