2016-03-30 132 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对象上的任何内容来设置要发送的内容,因此它可能被完全破坏,或者正在进行一些内部调用以获取返回空字符串的主机名。

相关问题