2009-12-04 190 views
0

我发现了几个关于如何执行此操作的教程,但它不起作用。这里是我的简单的收发邮件代码:在PHP中发送电子邮件

<?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
  • 目前我测试我的甲基苯丙胺(本地的Apache,MySQL和PHP网站server-thingy:D)
  • 显然我在“to”字段中输入了一个有效的电子邮件。
  • 当我写的错误日志文件,我没有看到任何

我运行Mac OS X

+0

您是否从本地计算机发送此电子邮件?或从服务器? – powtac 2009-12-04 22:45:10

+0

你在本地主机上开发吗?你检查过垃圾邮件文件夹吗? – MiseryIndex 2009-12-04 22:45:22

+0

什么操作系统很重要,而“不起作用”并不是很具体。有没有错误,额外的输出? – Kitson 2009-12-04 22:46:46

回答

2

PHP大概移交的电子邮件到本地SMTP服务器(我认为这是后缀)成功。这会给你成功的讯息。而且,您的计算机上的后缀可能未配置为实际成功发送电子邮件。或者端口25被您的ISP阻止。或者电子邮件服务器端的其他东西。

你的PHP很好。我认为你有一个SMTP服务器配置问题可以解决。

+0

你已经配置了postfix,它转发或复制所有电子邮件到本地帐户,然后你可以用你的电子邮件客户端下载。像test @ localhost之类的东西。 – markus 2009-12-04 23:10:41

0

首先,你应该阅读PHP mail page。有一些陷阱。

我还要检查,以确保您实际运行在其上正在运行的PHP脚本的计算机上的SMTP服务器。

+0

如果他没有运行SMTP服务器,他很可能不会得到成功的消息。 – markus 2009-12-04 23:09:22

+0

这不是真的 - 只有在邮件验证失败或被拒绝的情况下,函数才会返回false ...请参阅上面链接的页面。 – 2009-12-04 23:19:13

0

在返回真正的基于* NIX系统邮件()只是表明,PHP是能够与您的系统上的sendmail(或其替代品之一)进行通信。 True只是表示它发现了它所期望的sendmail,并且能够毫无错误地传递消息。

返回值是因为相当普遍无用:如您所见,它将返回true当邮件真的不会取得任何进展,而且在某些情况下,它实际上可以返回false,并成功交付的邮件。

你已经表明你在Mac上,你可以找到通过打开控制台的一些错误消息。最终你可能不希望你的应用程序真的发送邮件,但是配置你的本地邮件服务器作为中继应该允许它发生。使用Zend_Mail从Zend框架

0

尝试,可能会容易些。