繁体   English   中英

如何测试为什么sendmail / php无法正常工作?

[英]How can I test why sendmail / php isn't working?

我认为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中吗? 怎么办,我应该如何排除故障?

尝试这个:

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

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

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

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

mail功能返回成功仅意味着本地sendmail脚本接受了电子邮件,而不一定发送了电子邮件。

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

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

mail()是布尔函数。

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

var_dump将返回true或false。

如果为假,则说明配置或代码有问题。

但是,要简要调试您的mail()函数,我需要知道您的操作系统是什么? 您使用哪种类型的Web服务器?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM