我找到了几个关于如何做到这一点的教程,但它不起作用。这是我简单的电子邮件代码:
<?php
$name = $_POST['name'];
$email = $_POST['email'];
$phone = $_POST['phone'];
$zone = $_POST['zone'];
$call_time = $_POST['call_time'];
$comment = $_POST['comment'];
$to = 'MY EMAIL';
$subject = '$name is interested in your product!';
$message = 'name = $name\nemail = $email\nphone = $phone\ntimezone = $zone\nbest time to call = $call_time\nmessage = $comment';
if(mail($to, $subject, $message))
{
echo "The information was successfully sent.";
}
else
{
echo "The information was NOT sent.";
}
?>
(一旦我开始工作,我会加强安全性)
所以任何想法为什么这不起作用?我收到了成功消息,但没有收到电子邮件。
好的,所以我想我可以更具体一点:
我正在运行Mac OS X
答案 0 :(得分:2)
PHP可能会成功将电子邮件发送到您当地的smtp服务器(我认为它是postfix)。那会给你成功的信息。可能,您的计算机上的postfix未配置为实际成功发送电子邮件。或者您的ISP阻止了端口25。或者电子邮件服务器端的其他内容。
你的PHP很好。我认为你有一个SMTP服务器配置问题。
答案 1 :(得分:0)
首先,您应该阅读PHP mail page。有许多陷阱。
我还会检查以确保您在运行PHP脚本的计算机上实际运行SMTP服务器。
答案 2 :(得分:0)
在基于* nix的系统上,mail()返回true只表示PHP能够与您系统上的sendmail(或其中一个替代品)进行通信。 True只是表明它找到了sendmail的预期位置,并能够正确地发送消息。
返回值非常普遍无用,因为:正如您所见,当邮件真的无法到达任何地方时它将返回true,并且在某些情况下它实际上可以返回false并成功传递邮件。
您已经表明您使用的是Mac,您可以通过打开控制台找到一些错误消息。最终,您可能不希望您的应用程序真正发送邮件,但配置本地邮件服务器作为中继应该允许它发生。
答案 3 :(得分:0)
尝试使用Zend Framework中的Zend_Mail,对您来说可能更容易。