PHP邮件功能有时会起作用

时间:2011-07-12 15:29:58

标签: php email exchange-server

我正在编写一个需要通过PHP邮件功能发送电子邮件的脚本。如下所示,它在向gmail帐户发送电子邮件时起作用,但在我的域中不是帐户。我们正在运行Exchange服务器。截至目前,电子邮件是从_www @ server发送的。有没有人知道php邮件和Exchange的问题(或者甚至是以下划线和Exchange开头的电子邮件地址?)?或许这里还有另一个问题?无论如何,邮件功能都将返回true。

谢谢,

杰夫

$user = $_POST['email'];

$to = "someone@domain.org";

$subject = "Request to Reset EduTube Password";

$body = "Thank you " . $_POST['email'] . " for using the EduTube Password Reset System.\n\n";
$body .= "Please click the following link, or copy & paste it into your browser to reset your password.\n\n";
$body .= "http://testing.domain.org/reset.php?user=" . $user;

$headers = "From: someone@domain.org";

$from = "EduTube Password Reset System";

if (mail($to, $subject, $body, $headers)){

echo "Your email has been sent.  Please check your inbox shortly.";
echo "<br/><a href='http://testing.domain.org'>Click</a>";

}

1 个答案:

答案 0 :(得分:10)

当邮件传递到SMTP服务器时,

mail()的传递功能结束。它的唯一责任就是把你的信封放到角落里的邮箱里。邮政服务的其余部分(清空该邮箱,通过处理中心运行,将其飞到收件人的国家/城市等等)完全不在mail()的范围之内。只要信封放入邮箱,mail()就会返回true并假装它已被传送。

所以......检查你的SMTP服务器的日志,看看邮件到底发生了什么。也许它被接收器标记为垃圾邮件并被弹回。也许它被困在某个地方的队列等等......只有日志会告诉你 - 你在PHP中可以看到/做的任何东西都是无用的,因为PHP和mail()只占电子邮件发送/交付过程的1%,其他99%的东西出了问题。