2014-07-23 32 views
4

最近AOL已經開始拒絕從我的生產服務器發送的電子郵件。美國在線拒絕通過PHP郵件發送的電子郵件(錯誤5.2.1)

客戶通過我的網站進行產品諮詢,如果他們願意,可以自行「抄送」。我檢查垃圾郵件(例如,如果請求包含禁止的短語,網址等,請勿發送)。然而,最近,如果詢問者是AOL的客戶,該郵件被退回:

<*removed!*@aol.com>: host mailin-04.mx.aol.com[64.12.88.132] said: 521 5.2.1 : 
    AOL will not accept delivery of this message. (in reply to end of DATA 
    command) 

電子郵件協議我的專業領域!我只是使用標準的PHP郵件()函數,這已經運行好幾年了。

我已經瀏覽了美國在線Postmaster的支持頁面並聯繫了美國在線(顯然,這是我的第一通話端口 - 但他們還沒有迴應),加上我並不真正瞭解問題(這是50%找到解決方案!)。

http://postmaster-blog.aol.com/2014/04/22/aol-mail-updates-dmarc-policy-to-reject/

...它好像是AOL說:「我們不喜歡你發送電子郵件的方式,抱歉打擾你......」

如果任何人有任何經驗或具體瞭解如何讓AOL接受電子郵件,然後我很樂意聽取您的意見。我猜測這可能與我的電子郵件形成方式有關:這在幾年和(以前)沒有改變我沒有理由看代碼:

這裏是一個編輯的版本我如何發送電子郵件...

$recipient = "\"$supplier[supplierName]\" <$supplier[supplierEmail]>"; 
$subject = "$supplier[supplierName] enquiry"; 
$headers = "MIME-Version: 1.0".PHP_EOL ; 
$headers .= "Content-type: text/html; charset=utf-8".PHP_EOL; 
$headers .= "Reply-To: \"$cleanArrayEmail[realname]\" <$cleanArrayEmail[email]>".PHP_EOL; 
$headers .= "From: \"Admin\" <ADMIN_EMAIL>".PHP_EOL; 
if ($_POST['cc']){$headers .= "cc: \"$cleanArrayEmail[realname]\" <$cleanArrayEmail[email]>".PHP_EOL;} 

mail ($recipient, $subject, $msg, $headers, '-f'. ADMIN_EMAIL); 

非常感謝 史蒂夫

+0

你可能在那裏阻止列表。你必須聯繫他們才能得到該列表。 – Grumpy

+0

http://blog.codinghorror.com/so-youd-like-to-send-some-email-through-code/ – deceze

+0

什麼是您的SMTP服務器?如果您正在運行自己的SMTP服務器或從受損服務器發送郵件,那麼這可能是一個問題。我建議在這種情況下使用「公認的」SMTP服務(例如Gmail或SendGrid)。 – Dai

回答

1

AOL最近實施了DMARC拒絕,因爲在他們面前雅虎。這意味着如果您的PHP代碼嘗試發送聲稱來自Yahoo.com或AOL.com地址的電子郵件,則不會被收件人郵件服務器接受,無論是AOL,Yahoo,Gmail還是任何人否則支持DMARC。

看看你的電子郵件地址,是美國在線還是雅虎?如果是這樣,那麼DMARC可能是你的問題,如果不是這可能是別的。 DMARC策略在每個域的DNS記錄中設置,您可以使用此工具來檢查您的FROM域的DMARC策略。

https://dmarcian.com/dmarc-inspector/aol.com

+0

FROM是我的.co.uk域名。但拒絕的情況下,答覆是@ aol.com ......可以觸發DMARC? – SteveJarvis

+1

我不這麼認爲,我發現了幾個鼓勵使用Reply-To的來源,包括Yahoo。因此,如果MIME頭文件確實聲稱該消息來自您的域,則只應應用您的DMARC策略。所以這個問題可能是由別的東西造成的....嘗試通過你的代碼發送一條消息到http://www.mail-tester.com提供的地址,它可以幫助你找到解釋。 http://yahoomail.tumblr.com/post/82426900353/yahoo-dmarc-policy-change-what-should-senders-do –

2

據我所知,AOL確實拒絕郵件,其或者聲稱是來自AOL(FROM首部,DMARC),或郵件,其不是從AOL,但使用AOL地址作爲回覆標題。但是,我不能說這是否是由於DMARC造成的。因此,我可以確認史蒂夫在說什麼,我注意到我的應用程序中有同樣的行爲。

只要將Reply-To標題刪除或更改爲非AOL地址,郵件就會正確傳送。不過值得注意的是,只有置於「回覆」字段中的AOL客戶纔會收到郵件。如果在TO頭中還有其他AOL郵件,則這些郵件已發送並且未被阻止。

我提到我不確定,不管他們是否因DMARC而拒絕。有趣的提示可以在AOL postmaster blog introducing DMARC找到。這裏明確建議使用Reply-To行,並將實際地址放在那裏。此外,拒絕DMARC檢查失敗的郵件通常會被拒絕,並使用錯誤代碼來註明失敗的DMARC檢查。

2

同上waza-ari說過(AOL不會發送從非AOL服務器發送的包含AOL地址的回覆的電子郵件) - 這也適用於包含Compuserve地址的地址。我聽說它也適用於Hotmail &雅虎地址,但沒有親身體驗過。

我有系統的代碼,電子郵件2人,如果他們中的一個訪問其他的研究數據(這是一個合作研究系統,所以用戶希望由其他人分享他們的利益就知道了)。我更願意讓回覆僅包含他們的兩個地址,因爲我不需要成爲隨後的對話的一部分。但是,我不能在回覆字段中放置AOL/Compuserve地址,因爲它將被拒絕。

我的解決方案是用於解析用戶地址的代碼,如果其中一個位於其中一個域中,它會將我們網站的「info @」地址替換爲答覆地址,並且電子郵件的正文顯示用戶地址並告訴他們互相發送電子郵件。這可能無法很好地擴展到忽略指令並僅按回復的用戶的較大客戶羣。它對我來說效果很好,但我可能每個月生成的電子郵件少於100個,在使用此代碼的一年中,我從未有人偶然回覆過我。我們在我們的聯繫表格中使用相同的「解析和替換」代碼,其中通常將用戶的電子郵件地址作爲回覆來插入。

+1

美國在線我們有很大的問題,他們不接受回覆:甚至沒有區域文件中的_marc.domain.name記錄。我建議所有客戶不要再接受更多的電子郵件地址,並確保他們的電子郵件地址將被替換。 – Nick