2011-02-23 83 views
0

我使用以下代碼從我的vb.net web應用程序發送電子郵件。VB.net sendmail smtp錯誤

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值,甚至是虛構的電子郵件地址,工作正常。但是,當我使用另一個([email protected]),這是完全有效和工作,我得到以下錯誤:

「SMTP服務器需要安全連接或客戶端未驗證。服務器響應是:SMTP認證是必需的。「

爲什麼會發生這種情況?

+0

如果您設置mail.From =「test @ .com」,會發生什麼情況? – CarneyCode 2011-02-23 20:02:14

+1

備註:捕捉並忽略異常被認爲是非常糟糕的設計。出於某種原因拋出異常。通常應該在_least_上記錄它們。 – David 2011-02-23 20:02:20

回答

1

查看規範RFC 2554(http://www.faqs.org/rfcs/rfc2554.html)後,我猜測接收/中繼服務器會採用某種驗證方案來確保電子郵件實際上來自strFrom指示的任何地方(在@之後指示的服務器上的有效帳戶)。

該規範的第5項「MAIL FROM命令的AUTH參數」特別引人關注。

由於這個「AUTH參數的MAIL FROM指令」不是隨處使用,它可以解釋爲什麼事情對某些電子郵件地址,而不是爲別人打工。