2014-01-10 33 views
0

我有這樣的代碼來發送郵件不能發送郵件到@gmail

$to = "[email protected]"; 
$subject = "mail title"; 
$message = "mail content"; 

$from_mail = "[email protected]";   

$headers = 'MIME-Version: 1.0\r\n'. 
      'From: '.$from_mail.'' . "\r\n" . 
      'Reply-To: '.$from_mail.'' . "\r\n" . 
      'Content-type: text/html; charset=utf-8' . "\r\n"; 
      'X-Mailer: PHP/' . phpversion(); 

此代碼發送郵件以外@gmail任何郵件提供商。

什麼可能是原因

+2

你確定它不會在垃圾郵件中結束嗎? – gd1

+0

@ gd1,也不在垃圾郵件中。 – RIKI

+1

@AnshumanDwibhashi不重複。原始海報使用Gmail發送時沒有問題,但是腳本中的郵件顯然無法在Gmail端收到。 – JakeGould

回答

2

因爲垃圾郵件,電子郵件提供商越來越嚴格的關於接受郵件。

如果您使用的是共享主機,那麼可能該電子郵件服務器的信譽很差,您可能必須更改提供者或使用他們提供的任何郵件服務。電子郵件支持可能是一個好開始

很多時候,郵件沒有完全阻止,但延遲。我會等一會兒,檢查電子郵件是否到達那裏。我也將檢查郵件隊列,看電子郵件的狀態是什麼

確保你有適當的DNS記錄: _ DKIM _ SPF _ DMARC

確保反向DNS是建立並且該IP不在被阻止的池中,

此外,請確保您不在任何阻止列表中。

知識產權聲譽很重要,並隨着時間的推移得到改善。

+0

我想補充一點,因爲它似乎沒有設置任何驗證信息,他似乎在使用mail()函數或從系統默認帳戶發送的其他信息。 gmail很可能會批發阻止它。 –

+0

雖然這一切都取決於他的配置。如果他有一個阻止中繼的專用盒子,可以使用默認郵件。 –

3

我的猜測 - 和其他人一樣 - 是你的郵件進入了SPAM文件夾。但目前還不清楚這個腳本的機器是什麼。這是您的本地主機測試環境還是另一個獨立的開發服務器?或者它是一個正常運行的生產服務器

如果這是一個本地主機或其他獨立的測試環境中,我的猜測是,Gmail的,甚至可能是AOL,是阻止您的郵件爲垃圾。

但如果這是一個面向前方的生產服務器,問題最有可能追蹤到失蹤的PTR(又名:反轉DNS記錄)的IP地址的機器上。

如解釋on this site

PTR記錄主要用於檢查服務器名稱實際上是從哪裏連接是發起 IP地址關聯 。

意思是,如果無法將有效的PTR記錄連接到域,許多郵件服務器都會將任何郵件標記爲垃圾郵件。另外,如果這是具有多個IP地址的生產服務器,則SPF(發件人策略框架)記錄可能存在問題。閱讀更多的on this site

更確切地說,SPFv1允許域的所有者指定 他們的郵件發送策略,例如他們使用哪些郵件服務器從其域中發送郵件 。

所以SPF記錄是,基本上說,一個DNS記錄:「好了,你以爲你是從xyz.com IP地址1.2.3.4電子郵件?讓我查看你的SPF記錄,嘿! SPF記錄表示,從1.2.3.4的IP地址發送的任何電子郵件都很酷xyz.com!您不是垃圾郵件。「

儘管還有其他因素,比如在處理電子郵件時發送或接收延遲,但我非常有信心地解決您發送的IP地址的PTR和SPF狀態將清除這起來了。這不是一個編碼問題,而是一個網絡和郵件基礎架構配置問題。