2011-07-01 60 views
0

我的PHP聯繫表格不會將我的電子郵件發送到任何地方,無論是收件箱還是垃圾郵件。 PHP是最新版本,正在安裝有SMTP的服務器上運行。 我不能確定它是否是我的代碼或軟件...PHP郵件無法運作

繼承人我的PHP腳本接觸:

<?php 
$to = "FILTERED"; 
$subject = $_POST['subject']; 
$message = $_POST['message'] ." From: " .$_POST['email']; 
$from = "[email protected]"; 
$headers = "From:" . $from; 
mail($to,$subject,$message,$headers); 
?> 

和我的形式:

<form method='post' action='contactscript.php'> 
    Email: <input name='email' type='text' /><br /> 
    Subject: <input name='subject' type='text' /><br /> 
    Message:<br /> 
    <textarea name='message' rows='15' cols='40'> 
    </textarea><br /> 
    <input type='submit' /> 
    </form> 
+0

您需要var_dump(郵件($ to,$ subject,$ message,$ headers))並查看它是否返回true或false。 – Jage

+0

,你確定一切都沒問題,直到它到達'mail()'? – joakimdahlstrom

回答

0

我希望 - $到=「被過濾「;意味着您將過濾的電子郵件地址放入$ to。如果mail()失敗,你應該在PHP中出錯。啓用錯誤報告或檢查日誌文件。如果mail()沒有失敗,那麼它不再是一個PHP問題,你應該檢查郵件服務器。您還可以嘗試使用帶有硬編碼值的郵件()發送郵件,以查看郵件是否已發送。

1

要確定問題出在您的代碼還是外部軟件中,請檢查返回值mail()

if (mail($to,$subject,$message,$headers)) { 
    echo "Message was sent"; 
} 
else { 
    echo "Sending failed."; 
} 

如果它返回false,錯誤在於您的腳本,或郵件未被您的郵件服務器接收。

+0

我收到了「發送失敗。」消息,但我看到我的代碼沒有問題? –

+0

如果您已確認您的代碼沒有問題(通過仔細檢查$ to,$ subject,$ message和$ headers的值),則您的郵件未被郵件服務器接受。您需要檢查服務器日誌以找出原因。 –

+0

服務器日誌不顯示我的電子郵件被接受或拒絕,它們是空白的 –

0

也許在From冒號後面加一個空格?

$headers = "From:" . $from; 

- >

$headers = "From: " . $from; 

但是,是,無論的var_dump,或回聲出郵件():

echo mail($blah,...); 

1是成功,0將是失敗的。

而且,似乎$不成爲一個有效的電子郵件地址..

0

我會使用類似sendgrid,每天200條短信的免費計劃外包出去。它確保您的郵件不會被標記爲垃圾郵件,因爲它使用DKIM/SPF(不容易處理自己),再加上您不必擔心縮放。


0

雖然你可以用params和config變量來改變它,但是php mail()默認使用sendmail。如果它沒有安裝在標準位置,並且沒有明確配置它使用其他方法,則mail()將失敗。