2013-07-02 72 views
0

我想通過mail()函數發送電子郵件。PHP不良郵件標題

mail($to,$subject,$message)工作正常。

但是使用mail($to,$subject,$message,$header)不起作用。 標題是:

Date: Tue, 2 Jul 2013 15:01:49 +0200 +0200 
Return-Path: [email protected] 
From: "[email protected]" 
Message-ID: 
X-Priority: 3 
X-Mailer: PHPMailer 5.2.4 (http://code.google.com/a/apache-extras.org/p/phpmailer/) 
MIME-Version: 1.0 
Content-Transfer-Encoding: 8bit 
Content-Type: text/html; charset=UTF-8 

我的標題有什麼問題?僅供參考,頭文件由PHPMailer生成。 我用它來發送的代碼是:

$mail = new PHPMailer(); 
$mail->IsMail(); 
$mail->From = $from; 
$mail->FromName = $from; 
$mail->AddAddress($to); 
$mail->IsHTML(true); 
$mail->CharSet = 'UTF-8'; 
$mail->Subject = $subject; 
$mail->Body = $message; 
$mail->Send(); 
+0

它爲什麼不起作用?錯誤信息?沒有發送?幫助我們來幫助你。 – karmafunk

+0

似乎一切正常,除非我沒有收到電子郵件。那是奇怪的事情。 – HansElsen

+0

你有權訪問郵件服務器和日誌嗎?'看看日誌中是否有郵件被感染 – Preexo

回答

0

你需要一臺郵件服務器,你可能不會對你的開發環境。
mail()和PHPMailer只是將您的電子郵件移交給郵件服務器,郵件服務器然後將其發送到它的目的地。

如果您沒有可用的郵件服務器,無論您的代碼有多好,它都不會執行任何操作。檢查是否有可能缺失的返回代碼或異常(我不確定PHPMailer如何表示出錯,郵件()是通過返回代碼執行的),

我從來沒有真正使用過PHPMailer,但在我看來您沒有設置外部服務器來傳遞消息,這意味着PHPMailer將默認爲本地計算機。

郵件服務器不是你剛纔在幾分鐘內安裝和配置的東西,我相信你的本地機器沒有。

所以,這裏是我認爲正在發生的事情:
1)您沒有設置外部服務器,PHPMailer默認爲本地服務器。
2)您沒有本地郵件服務器,導致PHPMailer失敗。
3)你遺漏/忽略$ mail-> Send()的返回碼/拋出的異常,這應該告訴你出了什麼問題。

+0

嗨,正如我在說明中所說的,只是沒有郵件頭的'mail()'可以正常工作,因爲我確實有本地郵件服務器。對於Send()函數的返回碼:它不顯示錯誤。 – HansElsen

0

您是否嘗試過使用另一個標頭? 我用

$header = "From: [email protected] \n"; 
$header .= "MIME-Version: 1.0 \n"; 
$header .= "Content-Type: text/html; charset=iso-8859-1; type=\"text/html\" \n"; 
mail($email,$betreff,$mailbody,$header) 

它工作正常。