Php

Gmail 是否需要 TLS 才能接收郵件?

  • May 13, 2020

我目前正在使用 PHP 直接發送電子郵件stream_socket_client()

到目前為止,這工作得很好。我能夠發送帶有 DKIM 簽名的 HTML 電子郵件,該簽名通過了https://www.mail-tester.com上的所有測試

我自己的郵件伺服器以及 Yahoo 和 AOL 正在接收郵件,沒有投遞或垃圾郵件問題。

但是當我發送到 Gmail 時,不僅電子郵件沒有到達,而且沒有送達報告被發送回返迴路徑。儘管在 SMTP 交換期間沒有給出任何錯誤,但仍然如此。

如果我使用它向 Gmail 發送完全相同的測試電子郵件,mail()則沒有問題。我比較了兩封電子郵件的來源,它們僅在 DKIM 簽名上略有不同,我沒有“x”標頭,並且加密的標頭列表不同。我不認為這是問題所在。

我可以看到的唯一區別是我正在做mail()的事情和我還沒有使用 TLS。這似乎是一個強有力的候選者,但從我所閱讀的內容來看,Gmail 並沒有將 TLS 作為接收電子郵件的要求。

還有什麼我可能會失去的嗎?

下面是 SMTP 交換:

SMTP Connection:

HOST: 220 mx.google.com ESMTP f128si20492958wme.149 - gsmtp

EHLO: 250-mx.google.com at your service, [90.100.136.100]

FROM: 250-SIZE 157286400

RCPT: 250-8BITMIME

DATA: 250-ENHANCEDSTATUSCODES

DATA WRITE: 250-PIPELINING

QUIT: 250-CHUNKING

問題恰恰相反,Gmail 對所有行尾都很嚴格,而其他服務則不然。

我發現一個 rouge 額外的行尾導致通信在 FROM 失敗。

上面的各種程式碼實際上是來自 EHLO 呼叫的多行響應,然後我誤以為這些行是對後續呼叫的響應。

引用自:https://serverfault.com/questions/1016871