2013-06-04 152 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服務器,然後嘗試運行此代碼。它會工作。