2013-06-04 93 views
0

考虑下面的PHP代码:邮件()不能正常工作

<html> 
    <body> 
    <?php 
     $fname ="First Name = ".$_REQUEST['fname']."\n"; 
     $lname ="Last Name = ".$_REQUEST['lname']."\n"; 
     $breakfast = "Desired Breakfast = ".$_REQUEST['breakfast']."\n"; 
     $floor ="Desired Floor = ".$_REQUEST['floor']."\n"; 
     $to = "[email protected]"; 
     $email="[email protected]"; 
     $subject="shenkar php form from erez geva site"; 
     $body =$fname.$lname.$breakfast.$floor; 
     if (mail($to, $subject, $body, "From: $email")){ 
      header("Location: http://localhost:9090/sent.html"); 
      exit(); 
     }else{ 
      echo("<p>Message delivery failed...</p>"); 
     } 
    ?> 
    </body> 
</html> 

不工作。 用户从中选择所需选项的索引HTML文件写得很好(向我授教授),所以让我们假设问题在别处。 如果我直接去那个php文件:本地主机\ send.php我得到这个错误:

Warning: mail() [function.mail]: Failed to connect to mailserver at "localhost" port 25, verify your "SMTP" and "smtp_port" setting in php.ini or use ini_set() in C:\wamp\www\send.php on line 12

什么是它的meanning?

+0

**我正在使用Wamp 2.2e – user2162550

+2

那么,让我们来看看...你有一个运行在本地主机上的邮件服务器并且监听端口25吗? – Jon

+1

这是因为邮件不能从本地主机发送,除非你有一个正确配置的邮件服务 – Fabio

回答

1

您将需要安装本地邮件服务器才能执行此操作。如果您想将其发送到外部电子邮件地址,它可能会以不需要的电子邮件形式出现,或者可能根本无法完成。

一个好的邮件服务器,我用(我用它在Linux,但它也适用于Windows)是AXIGEN:http://www.axigen.com/mail-server/download/

您可能需要使用邮件服务器来安装它了一些经验,但一旦它的工作原理,你可以做任何你想要的东西。

+0

[smtp4dev](http://smtp4dev.codeplex.com/)是一个很好的Windows易于使用的替代方案。 – zessx

1

您的脚本正在尝试发送电子邮件,但在本地服务器上没有正确配置电子邮件服务。

if (mail($to, $subject, $body, "From: $email")){ 这是导致问题的线路。 mail函数是一个发送电子邮件的PHP函数。

当您的脚本到达此调用时,PHP会尝试连接到您的服务器上的邮件服务,它无法执行并因此失败。

很可能没有邮件服务正在运行,或者有可能它是以非默认方式配置的。无论哪种方式,这是你的系统管理员。

+0

我该怎么做? – user2162550

+1

转到您的教授/系统管理员。告诉他们你想从PHP发送电子邮件。他们会:(a)告诉你什么是正确的配置/为你修复配置,(b)为你安装一个邮件服务器,(c)告诉你他们的政策不允许学生发送电子邮件。 – ose

-1

您无法从本地服务器发送电子邮件。将您的文件上传到Web服务器,然后尝试运行此代码。它会工作。