php 需要已安装且正在运行的邮件系统_php无法使用mail函数原因分析及解决方法...

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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值