[VB.Net] SmtpClientException 回應 5.5.1

利用 SmtpClient 透過 Gmail 寄送電子郵件,卻引發 SmtpClientException(伺服器回應:5.5.1),怎麼回事?

圖 1 SmtpClientException

參考 Google 的 「Set up POP in mail clients」,SMPT 需要使用 TLS,而 Port 可使用 587。在知道操作方式後,來看一下程式碼:
Dim smtp As New Net.Mail.SmtpClient("smtp.gmail.com", 587)
smtp.Credentials = New NetworkCredential(username, password)
smtp.EnableSsl = True
smtp.Send(from:=username, recipients:=username, subject:=msgSubject, body:=msgBody)

在確認程式碼沒問題卻發生「類型 'System.Net.Mail.SmtpException' 的未處理例外狀況發生於 System.dll」,為什麼?

測試隨後,Google 馬上寄了一封信到測試用電子信箱的備援電子信箱中:

圖 2 Google 登入嘗試遭拒

原來問題是出在 Google 的「安全性較低的應用程式存取權限」。根據 Google 描述:「由於部分應用程式和裝置採用安全性較低的登入技術,您的帳戶會因此出現安全漏洞。建議您取消這些應用程式的存取權限;如果您瞭解有風險,但還是要使用這些應用程式,則可以開放存取權限。」

解決辦法很簡單,只要到 Google 的低安全性應用程式將存取權限設為開啟即可。

留言

這個網誌中的熱門文章