2012-12-08 243 views
-2

我只是想知道是否有人在這裏看到任何錯誤,代碼執行,但我從來沒有收到電子郵件,有什麼建議嗎?php電子郵件沒有發送

$to = $_POST['to_email']; 
$subject = $_POST['subject']; 
$message='<p><b>Message:</b> '.str_replace("\n.", "\n..", $_POST['message']).'</p>'; 

$headers = "From: " . strip_tags($_POST['from_email']) . "\r\n"; 
$headers .= "Reply-To: ". strip_tags($_POST['from_email']) . "\r\n". 
     'X-Mailer: PHP/' . phpversion(); 

mail($to, $subject, $message, $headers); 
+0

檢查您的垃圾郵件文件夾。 –

+0

檢查你的/var/log/mail.log或/ var/log/syslog文件。可能是你的mta給你更多的信息。 – dAm2K

+0

你是否嘗試過直接使用sendmail(或者你已經安裝的任何mta)?您的系統可能配置錯誤/缺少MTA。 –

回答

0

這將取決於PHP的安裝。

PHP可以做很多事情 - 最常見的是將電子郵件排隊到本地郵件服務器(在Linux上常見,在Windows上則不太常見),或者與外部郵件中繼交談並將郵件排隊(通常需要認證,除非它是罕見的開放中繼)。寫入文件也是可以的。

所有那mail()功能保證,如果沒有警告是電子郵件已排隊到php.ini文件中指定的位置。

做的第一件事是檢查郵件報告成功...

$Success = @mail($to, $subject, $message, $headers); 
if(!$Success) { 
    print "Failed to queue email"; 
} 

你需要做的下一件事就是檢查你的php.ini的配置,看看郵件是如何配置的。確保它使用正確的憑據指向有效的郵件服務器。如果你在Linux和使用本地郵件服務器一樣postfix,檢查它的運行(像/etc/init.d/postfix status取決於你的發行版)

正如@FlorianKasper提到,SMTP作爲一個選項僅在Windows上使用。如果您可以明確說明您正在使用的操作系統,我們可能會進一步提供幫助。

+0

SMTP ini sais的SMTP:;只有Windows在基於unix的系統上,您必須使用sendmail/something simmilar命令 http://php.net/manual/de/mail.configuration.php#ini.smtp –

+0

這是真的,但我沒有看到它使我的答案不正確? OP沒有指定操作系統,如果你安裝了一個例如[xmailserver](http://www.xmailserver.org/) – Basic

+0

,那麼它也可以在Windows上使用本地郵件服務器,如果你覺得攻擊 –

1

mail()函數只是使用sendmail unix/linux命令發送郵件。如果它是錯誤的配置,它不會工作

如果你有你的PHP訪問INI檢查出的[郵件]部分

smtp = SMTPSERVER (windows) 
smtp_port = 25 (Windows) 
sendmail_path= (unix)