昨天在工作上處理 SMTP 碰到這個棘手的問題
SMTP 又稱 Simple Mail Transfer Protocol,字面上即看得出來這是有關郵件傳輸的協定。
在廣大的網絡裡,資訊(包含網頁、影音、郵件 ... )傳遞都是由 Protocol 來規範的。
SMTP 即是用來規範郵件傳遞的協定。
如果你要寄 Email,一定要有 SMTP Server。
假如你在網絡上營運一間公司,通常需要「寄信」給客戶,這時候必定需要一個 Server 來幫你處理寄信的動作。
SMTP Server 好比郵局,可以寄信,且有很多窗口 ( ports )。
Google SMTP, SMTP2GO 等,還有其他服務商,都是很方便的第三方 SMTP app。
當 Client 按下 Send 送出信件,此時會打開與 SMTP Server 間的通道 ( port ),然後開始一來一往的 request / response,確保 Client 擁有足夠的資料、權限去發信給收件人,SMTP Server 也會在對話結束前,將信件給送出去。
上網爬了很多文,有需多原因可能導致 connect failed,像是 SMTP server config 沒有填寫好,或者 port 沒有填寫好 (client 和 server 的 port 對不上) 等等,還有諸多可能。
昨日的情況是以 XCART 作為後台的商城,當客戶忘記密碼時,沒有收到忘記密碼的信件。
檢查了 SMTP config 和程式碼都沒有頭緒,最後發現是 XCART -> Company "From" email 不是填寫 verified sender 的 email address,所以 SMTP Server 無法做連線。
且 cPanel 的 port 與 SMTP Server Config 的 port 沒有對起來,這也是一個錯誤。
以上希望能幫助到人
[參考]
-https://postmarkapp.com/guides/everything-you-need-to-know-about-smtp