我如何测试sendmail / php为什么不起作用?

时间:2014-06-11 07:34:26

标签: php sendmail

我正确配置了php.ini,我认为......

; For Unix only.  You may supply arguments as well (default: "sendmail -t -i").
; http://php.net/sendmail-path
sendmail_path = /usr/sbin/sendmail -t -i 

php一般都运行良好。 phpinfo()看起来很好。

我有一个用于发送测试消息的脚本,它声称可以工作..

<?php
ini_set( 'display_errors', 1 );
error_reporting( E_ALL );
$from = "notarealaddy@domain.com";
$to = "myactualemail@gmail.com";
$subject = "PHP Mail Test script";
$message = "This is a test to check the PHP Mail functionality";
$headers = "From:" . $from;
mail($to,$subject,$message, $headers);
echo "Test email sent";
?>

我总是收到一条消息:“发送测试邮件”

但是没有任何东西出现在gmail中?给出了什么,我该如何排除故障?

4 个答案:

答案 0 :(得分:1)

试试这个:

if(mail($to,$subject,$message, $headers))
{
echo "Test email sent";
}

这将检查邮件是否已发送,如果是,则会回显“发送测试邮件”。

答案 1 :(得分:1)

首先和最快:检查您的垃圾邮件文件夹。 Gmail倾向于过滤掉不是来自完善的邮件服务器的邮件。

其次,检查发送电子邮件的服务器上的sendmail日志。日志应告诉您接收SMTP服务器是否已接受该消息。

mail函数返回成功只表示本地sendmail脚本接受了电子邮件,而不一定是电子邮件已发送。

答案 2 :(得分:1)

如果您使用联系表单,请仔细检查您的变量。在您的情况下,它们是硬编码的,但执行检查总是好的。这是一个简化的检查器。 (我编辑了我应该用消息发送的变量的检查)

    if (mail ($to, $subject, $body, $headers)) {
         echo '<p>Message Send.</p>';
    } else {
         echo '<p>Something went wrong, not delivered.</p>';
    }

答案 3 :(得分:0)

mail()是布尔函数。

$check = mail($to,$subject,$message, $headers);
var_dump($check);

var_dump将返回true或false。

如果为false,则配置或代码有问题。

然而,要简要调试你的mail()函数,我需要知道,你的操作系统是什么?你使用什么类型的网络服务器?