2012-04-11 39 views
4

我在使用PHP發送郵件時遇到了問題。郵件由Outlook正確接收,但不顯示電子郵件中的「發件人」地址。php郵件與outlook無法正常工作

$subject = $_POST['message_subject']; 
$message = $_POST['speaker_description']; 
$email = $_POST['email']; 
$option = $_POST['sel_reg_options']; 
$email = substr_replace($email ,"",-1); 

$headers .= "Content-type: text/html; charset=iso-8859-1\r\n"; 
$headers .= "From:My Name<[email protected]>\r\n"; 
$headers .= "Reply-To: Registration of Interest<[email protected]>\r\n";   
$headers .= "MIME-Version: 1.0"."\r\n"; 
$mail_sent = @mail($email,$subject,$message,$headers); 
+0

你有沒有試過在':'之後留下空格? – deceze 2012-04-11 05:26:56

+0

':'錯過之後的空間 – 2012-04-11 05:38:13

+0

是啊試過了一個空間,但仍然沒有什麼是有用的我已經谷歌它如此之多現在我生病了它 – buttjee 2012-04-11 07:04:57

回答

2

你應該用雙引號括名稱(這也適用於回覆地址名稱):

$headers .= "From: \"My Name\" <[email protected]>\r\n"; 


此外,如果在Unix上運行PHP,從信封添加到$additional_parameters參數:

$mail_sent = @mail($email,$subject,$message,$headers,'-f [email protected]'); 


相反,如果在Windows上運行,設置sendmail_from INI指令亦或i ñphp.ini或使用:

ini_set('sendmail_from', '[email protected]'); 


來源:RFC2822php.net user commentIBM sendmail command reference

+0

沒有其他人在Gmail中仍然是相同的消息顯示完美,但前景未顯示發送地址 – buttjee 2012-04-11 07:00:27

+0

你能告訴我哪個服務器(apache,IIS)和操作系統在運行PHP嗎? – MrFusion 2012-04-11 08:12:54

+0

另外,你可以嘗試把你的標題是這個命令? (來自,MIME,內容,回覆)。最後,檢查第一個'$ header'調用是否不附加數據(即'='而不是'。=')。 當調用'mail()'來查看可能的錯誤/警告時,刪除'@'會很好。 – MrFusion 2012-04-11 08:18:33

0

我最近剛換我的電子郵件腳本PHPMailer。它使得創建和發送電子郵件變得更容易。我不再擔心錯誤的標題和PHP和電子郵件的錯綜複雜。我還沒有任何格式化電子郵件的問題,以便在幾個電子郵件客戶端中正確接收它們。