2013-07-05 86 views
0

下面是我用於電子郵件功能的Webform PHP代碼。點擊表單中的提交按鈕後,我已成功重定向到thankyou.html頁面,但我沒有收到任何電子郵件到我的電子郵件帳戶。親切的幫助深表謝意。PHP郵件功能不適用於Webform

PHP Code: 
<?php 
if(isset($_POST['submit'])) { 
$emailbody = 'Name: '.$_POST['name']."\n" 
.'E-mail: '.$_POST['email']."\n" 
.'Phone: '.$_POST['phone']."\n" 
.'Address: '.$_POST['addr']."\n" 
.'City: '.$_POST['city']."\n" 
.'State: '.$_POST['state']."\n" 
.'Enquiry: '.$_POST['msg']; 
mail('[email protected]', 'Subject Line', $emailbody); 
header('location: thankyou.html'); 
} else { 
header('location: index.html'); 
} 
?>   
+0

首先閱讀文檔... HTTP:// PHP .net/manual/en/function.mail.php – jycr753

+0

很多可能在這裏出錯的東西。您是否在一臺安裝了MTA的郵件服務器的Web服務器上進行測試?你測試過「郵件」函數的結果嗎(發送成功時爲true,錯誤時爲false)? – brezanac

+0

我強烈建議使用一個高質量的郵件類,例如phpMailer或Swiftmailer,而不是PHP的內置'mail()'函數。有很多事情可能會出錯;使用其中的一個將會避免很多(或者如果它們發生,給你提供有意義的錯誤消息)。 – Spudley

回答

0

您可能會缺少$ additional_headers參數中的「From」字段。嘗試

$headers = 'From: [email protected]'; 
mail('[email protected]', 'Subject Line', $emailbody, $headers); 
+0

嗨克里斯,我試過你的建議,但沒有工作。 – user2554130

0

這可能是您的主機有問題。

我認爲,由於@ email.com從您的主機獲得的電子郵件垃圾郵件,它現在可能在黑名單中。

這意味着你必須聯繫你的主機關於這個問題,並告訴他們與@ email.com交談,將您的主機從黑名單中刪除。


我有這個問題一段時間前就000webhost.com,他們告訴我,我不能發送電子郵件至yahoo.com帳戶,因爲yahoo.com添加000webhost.com上了黑名單,因爲用戶發送垃圾郵件的服務器雅虎。

+0

嗨博伊德,我的電子郵件沒有被列入黑名單,因爲我嘗試了不同的電子郵件,但徒勞無功。 – user2554130

+0

未將您的電子郵件列入黑名單。你的主人的電子郵件被列入黑名單。 – boyd

0

您的服務器或沿線路由器很可能拒絕發送郵件,因爲它沒有From:地址。您可以添加使用headers參數之一mail()

<?php 
if(isset($_POST['submit'])) { 
    $emailbody = 'Name: '.$_POST['name']."\n" 
    .'E-mail: '.$_POST['email']."\n" 
    .'Phone: '.$_POST['phone']."\n" 
    .'Address: '.$_POST['addr']."\n" 
    .'City: '.$_POST['city']."\n" 
    .'State: '.$_POST['state']."\n" 
    .'Enquiry: '.$_POST['msg']; 

    // Add extra headers here 
    $headers = "From:[email protected]" 
    mail('[email protected]', 'Subject Line', $emailbody, $headers); 

    header('location: index.html'); 
} else { 
    header('location: about-us.html'); 
} 

您應該檢查任何用戶輸入suplied,以確保它不會嘗試通過增加其自身的標題來顛覆你的郵件功能。檢查文字如To:,Cc:Bcc:

大多數互聯網服務提供商將拒絕提供電子郵件,除非它來自注冊的域名。有時,生成郵件的服務器上必須存在from地址。

請注意,還有其他一些原因可能導致郵件無法傳遞:錯誤的尋址和垃圾郵件過濾器,只有兩個。

+0

嗨邁克,我試着用上面的代碼與額外的標題,但仍然我的郵件功能無法正常工作。和以前一樣。我不確定在代碼中我還能做些什麼修改。 – user2554130

+0

@ user2554130道歉 - 我現在糾正的附加標題有一個小錯誤。但是,如果您在其他答案中嘗試了建議,則無論如何您都會介紹這一點。正如我已經指出的,郵件不能以這種方式傳遞的原因有很多,而且你無法控制大部分郵件。從最簡單的案例開始:您可以將郵件發送到同一服務器上的一個帳戶,並從那裏開始工作。我也建議你嘗試一個庫。請參閱Spudley的一些建議的評論。 – 2013-07-05 20:48:26

0

我找到了答案。我只是將$ emailbody分成$消息,現在工作正常。我不確定使用$ emailbody而不是$消息是問題,但它現在工作正常。

謝謝大家。

0

首先檢查您的主機服務器是該提供的郵件功能,你只寫

echo phpinfo(); 

你需要檢查郵件功能啓用或不