2009-12-04 192 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

嘗試,可能會容易些。