2014-06-11 35 views
0

我在php.ini配置正確,我想......如何測試sendmail/php不工作的原因?

; For Unix only. You may supply arguments as well (default: "sendmail -t -i"). 
; http://php.net/sendmail-path 
sendmail_path = /usr/sbin/sendmail -t -i 

PHP是一般工作的罰款。 phpinfo()看起來不錯。

我有我使用發送測試消息的腳本,它聲稱工作..

<?php 
ini_set('display_errors', 1); 
error_reporting(E_ALL); 
$from = "[email protected]"; 
$to = "[email protected]"; 
$subject = "PHP Mail Test script"; 
$message = "This is a test to check the PHP Mail functionality"; 
$headers = "From:" . $from; 
mail($to,$subject,$message, $headers); 
echo "Test email sent"; 
?> 

我總是得到一個消息,說:「測試郵件發送」

但在Gmail中什麼都沒有顯示出來?什麼給,我應該如何解決?

+0

你實際上不會建立一個聲明來檢查它是否被髮送。你只是簡單地迴應'發送測試郵件'(順便說一句)。你應該爲它做一個if else語句。 – Dorvalla

回答

1

試試這個:

if(mail($to,$subject,$message, $headers)) 
{ 
echo "Test email sent"; 
} 

這將檢查郵件被髮送,如果是,它會響應「發送測試電子郵件」。

+0

只是白色的屏幕。 :( – some1

0

mail()是布爾函數。

$check = mail($to,$subject,$message, $headers); 
var_dump($check); 

var_dump將返回true或false。

如果爲false,則說明配置或代碼有問題。然而,爲了簡單調試你的mail()函數,我需要知道,你的操作系統是什麼?你使用什麼類型的網絡服務器?

+1

你好,這可能是一個很好的解決方案...但它通常被認爲是一個很好的解釋這個問題的解釋。不要忘記,新手也來到堆棧溢出,並希望知道他們的問題是否也可以通過這個答案解決...所以它可以幫助他們弄清楚:) –

+0

我改變了最後兩行,它只是白色屏蔽。 – some1

+0

@ some1更新了答案。我需要知道您的操作系統和Web服務器類型 – skycrew

1

首先和最快:檢查您的垃圾郵件文件夾。 Gmail傾向於過濾不是來自完善的郵件服務器的郵件。

其次,檢查發送電子郵件的服務器上的sendmail日誌。日誌應該告訴你接收SMTP服務器是否已接受消息。

mail函數返回成功僅表示本地sendmail腳本接受了電子郵件,不一定是發送了電子郵件。

+0

在他的情況下,他只是迴應的消息,沒有它實際上被檢查。沒有if else語句執行或調整回聲消息。然而,你說得對,郵件功能確實只是簡單地接受它,而不是它被髮送。 – Dorvalla

1

如果您使用聯繫表單,請仔細檢查您的變量。在你的情況下,它們是硬編碼的,但執行檢查總是很好的。這是一個簡化的檢查器。 (我編輯了我的支票應該是與消息一起發送的變量)

if (mail ($to, $subject, $body, $headers)) { 
     echo '<p>Message Send.</p>'; 
    } else { 
     echo '<p>Something went wrong, not delivered.</p>'; 
    } 
+0

將$ body更改爲$ message - 仍然收到「出錯了」:( – some1

+1

嗯,至少現在你知道郵件函數可能有問題,導致函數不會接受它的提要。函數沒有被正確設置,(錯誤的寫入變量)或者你的服務器沒有被配置爲發送這些消息,所以你可能會設置錯誤的INI文件。 – Dorvalla