php mail header設定 – 解決虛擬主機會有漏信的問題

之前幫朋友寫購物網站, 所以需要寄信給客戶以確認帳單, 但卻發現目前的虛擬主機會有漏信的問題, 這些日子以來很多顧客反應沒有收到確認信件, 所以要Debug是程式錯誤還是主機錯誤!

原本語法:

$store_main = "xxxxxxx@yahoo.com.tw"; /* 商家客服信箱 */
$headers = "MIME-Version: 1.0rn";
$headers .= "Content-type: text/html; charset=utf-8rn";
$headers .= "From: ".$store_main."rn";  
mail ($email, $subject, $body, $headers);

過一陣子, 我查出基本方向..
只要我有加$headers 就會寄件失敗

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

拿掉 $headers 就會寄件成功, 但會出現HTML亂碼與一些錯誤資訊

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

主機商回信:

您好:

請將 $headers.= "From: wii遊戲片專賣店rn";
裡面的 Email 更改為位於我們主機的 Email
例如 service@domainname.com
這樣就可以正常發信不會漏信

因為您之前使用 xxxxxx@yahoo.com.tw 作為寄信者
但是信件卻不是真的從 Yahoo 主機發送出去
所以會被 Gmail、Yahoo、Hotmail 等判斷為廣告信而拒收

如果還有任何問題
隨時歡迎您再來信詢問
謝謝

後來改成主機domainname的email
果然就變正常… 感覺是個滿初級的錯誤…..

發表迴響