PHP mail()返回false日志为空

时间:2013-01-11 11:59:55

标签: debian php

我已经安装了PHP版本5.3.3-7 + squeeze14的apache,我无法收到邮件,这是我正在使用的代码:

error_reporting(E_ALL|E_STRICT);
ini_set('display_errors', 1);
echo 'I am : ' . `whoami`;
$result = mail('*****','Testing 1 2 3','This is a test.');
echo '<hr>Result was: ' . ( $result === FALSE ? 'FALSE' : 'TRUE') . $result;
echo '<hr>';
echo phpinfo();

这是我得到的回应:

I am : www-data
Result was: FALSE

在我的php.ini中,我已经编辑了两行,这就是现在的样子:

sendmail_path = /usr/sbin/sendmail -t -i -f something@****.lt
sendmail_from = something@****.lt

/var/log/mail.log完全是空的,即使你现在已经尝试了一个多小时的各种事情。

我对linux很陌生,所以我很确定我错过了一些似乎无法找到的明显内容......

编辑忘记提到每次我对配置进行一些更改时都会重启apache,而我正在使用Debian 6.0

2 个答案:

答案 0 :(得分:2)

您需要安装postfix或sendmail(首选Postfix)

php mail()函数需要以任何方式使用MTA。

或者您可以使用复杂的方式和脚本编写一个smtp Mailclass:email.about.com/od/emailprogrammingtips/qt / ...

或者您可以使用phpmailer:phpmailer.worxware.com。

但是为了能够使用mail()你需要一个mta(Aka postfix或sendmail)

答案 1 :(得分:2)

在许多服务器上以多种方式配置mail()函数。使用具有SMTP支持的邮件类将为您节省大量时间。我更喜欢:

https://github.com/Synchro/PHPMailer

另一方面,使用垃圾邮件过滤器等发送每个SMTP服务器的邮件效果更好。