用PHP发送电子邮件

时间:2009-12-04 22:43:11

标签: php email

我找到了几个关于如何做到这一点的教程,但它不起作用。这是我简单的电子邮件代码:

<?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
  • 我目前正在MAMP上测试我的网站(本地的Apache,MySQL和PHP服务器 - 东西:D)
  • 显然我在“收件人”字段中放了一封有效的电子邮件。
  • 当我将错误写入日志文件时,我看不到任何

我正在运行Mac OS X

4 个答案:

答案 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,对您来说可能更容易。