2016-03-30 139 views
1

我有一個小網站,有一個聯繫表格,使用gmail的smtp發送電子郵件。 下面的代碼:使用Gmail發送電子郵件與VB.NET錯誤smtp

Dim MyMailMessage As New System.Net.Mail.MailMessage() 

     'From requires an instance of the MailAddress type 
     MyMailMessage.From = New MailAddress("[email protected]") 
     MyMailMessage.To.Add("[email protected]") 
     MyMailMessage.Subject = "MSG" 
     MyMailMessage.IsBodyHtml = True 
     MyMailMessage.Body = "TEXT" 
     'Create the SMTPClient object and specify the SMTP GMail server 
     Dim SMTPServer As New SmtpClient("smtp.gmail.com") 
     SMTPServer.Port = 587 
     SMTPServer.Credentials = New System.Net.NetworkCredential("user", "pass") 
     SMTPServer.EnableSsl = True 

     Try 
      SMTPServer.Send(MyMailMessage) 
      Return True 
     Catch exx As SmtpException 
      Throw exx 
     End Try 

我得到的錯誤是:

5.5.4 HELO/EHLO參數無效,關閉連接。 ks5sm2862700wjb.13 - gsmtp

+0

是您在實際使用的地址之上顯示的電子郵件地址?如果您使用的電子郵件地址中存在無效語法,則可能會收到5.5.4錯誤。 – Dustin

+0

不,即時通訊使用正常的合法電子郵件地址。 – user1578139

+0

HELO/EHLO系統嘗試檢測垃圾郵件並將其攔截。該消息的ks5sm2862700wjb.13 - gsmtp部分似乎表明gmail正在阻止它,因爲它認爲它是垃圾郵件(或者是可疑的)。您是否嘗試使用.IsBodyHtml = False發送測試消息? – Dustin

回答

1

從今天上午開始,我遇到了同樣的問題。

我們將發件人的電子郵件地址設置爲EHLO的參數,並在此處進行疏忽。我相信@導致了這個問題。這必須是一個新的要求,因爲這工作了多年。

我將EHLO命令更改爲「EHLO google」,它再次運行。

+0

EHLO之後的值應該是您的主機和域名,而不是您要連接的服務器。 EHLO就像是在說「你好,我的名字是xxxx」。當你說EHLO時,你會說「你好,....」沒有名字。 – bvstone

2

Google剛剛開始阻止任何嘗試帶有不正確參數的HELO/EHLO的連接。根據RFC 5321,EHLO/HELO應該有一個參數,它應該是發送郵件的機器的名稱。

最常見的斷開配置不發送任何參數,這是你在做什麼。錯誤信息不是很好,因爲你必須注意到中間有兩個「空」參數的空間。

對於常規郵件發送,給出與您要發送的IP地址相匹配的主機名(例如,DNS PTR查找)是最正確的名稱。

對於smtp-msa(即基於用戶/密碼的提交給smtp.gmail.com),這不太重要,但它應該仍然是服務器的完全限定的域名(如果可用)。

谷歌並沒有在這個領域強制實施RFC 5321的全部要求,但是,如果你打算修復它,最好這樣做是正確的。

我沒有看到SmtpClient對象上的任何內容來設置要發送的內容,因此它可能被完全破壞,或者正在進行一些內部調用以獲取返回空字符串的主機名。

相關問題