之前幫朋友寫購物網站, 所以需要寄信給客戶以確認帳單, 但卻發現目前的虛擬主機會有漏信的問題, 這些日子以來很多顧客反應沒有收到確認信件, 所以要Debug是程式錯誤還是主機錯誤!
原本語法:
1 2 3 4 5 |
$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 就會寄件失敗
1 |
mail($to, $subject, $message, $headers); |
拿掉 $headers 就會寄件成功, 但會出現HTML亂碼與一些錯誤資訊
1 |
mail($to, $subject, $message, $headers); |
主機商回信:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
您好: 請將 $headers.= "From: wii遊戲片專賣店<xxxxxxxxx@yahoo.com.tw>rn"; 裡面的 Email 更改為位於我們主機的 Email 例如 service@domainname.com 這樣就可以正常發信不會漏信 因為您之前使用 xxxxxx@yahoo.com.tw 作為寄信者 但是信件卻不是真的從 Yahoo 主機發送出去 所以會被 Gmail、Yahoo、Hotmail 等判斷為廣告信而拒收 如果還有任何問題 隨時歡迎您再來信詢問 謝謝 |
後來改成主機domainname的email
果然就變正常… 感覺是個滿初級的錯誤…..