Php mail()函数,用于处理未送达的电子邮件

Php mail()函数,用于处理未送达的电子邮件,php,Php,首先,我测试邮件功能,允许显示错误并使用它进行测试 <?php error_reporting(E_ALL); ini_set('display_errors', '1'); $email = "demo@gmail.com"; $subject = "Test Message"; $msg = "This is a test message"; $eLog="/tmp/mailError.log"; //Get the size of the error log //ensur

首先,我测试邮件功能,允许显示错误并使用它进行测试

<?php

error_reporting(E_ALL);
ini_set('display_errors', '1');


$email = "demo@gmail.com";
$subject = "Test Message";
$msg = "This is a test message";

$eLog="/tmp/mailError.log";

//Get the size of the error log
//ensure it exists, create it if it doesn't
$fh= fopen($eLog, "a+");
fclose($fh);
$originalsize = filesize($eLog);

mail($email,$subject,$msg);

/*
* NOTE: PHP caches file status so we need to clear
* that cache so we can get the current file size
*/

clearstatcache();
$finalsize = filesize($eLog);

//Check if the error log was just updated
if ($originalsize != $finalsize) {
print "Problem sending mail. (size was $originalsize, now $finalsize) See $eLog
";
} else {
print "Mail sent to $email";
}
?>

我不在乎那次否决票,好吧,我终于明白了,这会帮助另一个像我这样的凡人“不是上帝的程序员”

如果您是在linux服务器上,似乎mail()函数被发送到sendmail函数,要启用此功能,您必须安装postfix

这很容易。。解决我所有的问题


1)检查邮件的返回值()2)检查服务器的邮件日志,查看php提交邮件时会发生什么情况。3) 检查你的接收帐户的垃圾邮件文件夹。也做一些疑难解答。注释掉mail()行并添加一个基本行,以查看是否有效。邮件('demo@gmail.com","测试","部分内容",;然后你至少会知道它是否在你的代码中。好的1)如何。2) 我检查/tmp/mailError.log那里没有错误,3)我没有在那里发送电子邮件:(@Steve做了那件事..没有错误抛出,但电子邮件没有排列检查你的
邮件的返回状态()
功能。如果它返回了
true
则您的电子邮件已被接受传输。之后,您正在调试电子邮件,而不是代码,因此您有点离题。邮件可能无法发送的原因有100个,这对于简单的问答来说太广泛了。就个人而言,我认为这可能对许多人有用。我知道st计算我见过多少次关于相同或类似问题的问题。是的,这个问题必须是第一件要检查的事情总是留到最后…这就是为什么我也认为这是有用的。例如,在Linode中,您必须始终安装postfix或mail()行不通。知道这是个好消息。我个人直到现在才知道,谢谢。干杯