VB.net sendmail smtp 错误
Posted
技术标签:
【中文标题】VB.net sendmail smtp 错误【英文标题】:VB.net sendmail smtp error 【发布时间】:2011-02-23 19:57:02 【问题描述】:我正在使用以下代码从我的 vb.net Web 应用程序发送电子邮件。
Public Function SendMail(ByVal strTo As String, ByVal strFrom As String, _
ByVal strSubject As String, ByVal strBody As String) As String
Try
Dim SmtpServer As New SmtpClient()
Dim mail As New MailMessage()
SmtpServer.Credentials = New _
Net.NetworkCredential("ns1.jasmine.arvixe.com", "<password>")
SmtpServer.Port = 587
SmtpServer.Host = "mail.<mydomain>.com"
mail = New MailMessage()
mail.From = New MailAddress(strFrom)
mail.To.Add(strTo)
mail.Subject = strSubject
mail.IsBodyhtml = True
mail.Body = strBody
SmtpServer.Send(mail)
Return True
Catch ex As Exception
Return False
End Try
End Function
当我使用我的个人 live.co.uk 电子邮件地址作为 strFrom 值时,它工作正常,甚至是一个虚构的电子邮件地址。但是,当我使用另一个完全有效且正常工作的 (contact@mydomain.com) 时,我收到以下错误:
“SMTP 服务器需要安全连接或客户端未通过身份验证。服务器响应为:需要 SMTP 身份验证。”
为什么会这样?
【问题讨论】:
如果设置 mail.From ="test@查看规范 RFC 2554 (http://www.faqs.org/rfcs/rfc2554.html) 后,我的猜测是接收/中继服务器正在使用某种身份验证方案,以确保电子邮件实际上来自 strFrom 指示的任何位置(@ 后面指示的服务器上的有效帐户)。
该规范的第 5 项“MAIL FROM 命令的 AUTH 参数”特别令人感兴趣。
由于此“MAIL FROM 命令的 AUTH 参数”并未在任何地方使用,它可以解释为什么某些电子邮件地址适用,而其他电子邮件地址无效。
【讨论】:
以上是关于VB.net sendmail smtp 错误的主要内容,如果未能解决你的问题,请参考以下文章
如何在 VB.NET 中自动获取 SMTP 详细信息,如在 Thunderbird 中