2015-05-19 49 views
0

我有一個窗口服務(Asp.net C#),它在一段時間後向用戶發送電子郵件(使用SMTP)。它的正常工作形式有一段時間,但是當它encontered的電子郵件以「@ gmail.com」它下面的錯誤breaked:windows服務當試圖發送到非本地電子郵件地址時,此郵件服務器需要身份驗證

window service this mail server requires authentication when attempting 
to send to a non-local e-mail address. 
Please check your mail server client settings or contact your 
administrator to verify that the domain or address is defined for this server. 

但隨着相同的憑據&代碼發送電子郵件(以相同的電子郵件地址)時它在IIS上的同一臺服務器(系統)上託管的網站上觸發。

我在網上搜索,但無法理解爲什麼它從Asp.net網站代碼發送電子郵件,但不是從.net Windows服務代碼發送電子郵件(儘管發送en \ mail到相同的域時不會發生此問題,即。用作SMTP服務器的abc.com)。

任何想法,我在這裏失蹤或建議。

感謝

回答

0

那麼在我的情況下,罪魁禍首是下面的代碼行:

smtp.UseDefaultCredentials = FALSE;

看看下面的代碼(評論之後的電子郵件都沒有錯誤發送):

using (mmMessage) 
     { 
      mmMessage.Subject = strSubject; 
      mmMessage.Body = strBody; 
      mmMessage.IsBodyHtml = blnIsBodyHTML; 
      mmMessage.Headers.Add("Reply-To", FromEmailAddress); 
      SmtpClient smtp = new SmtpClient(); 
      using (smtp) 
      { 
       smtp.Host = SMTPServer; 
       smtp.Credentials = new System.Net.NetworkCredential(SMTPUser, SMTPPwd); 
       smtp.Port = Port; 
       //smtp.UseDefaultCredentials = false; 
       smtp.EnableSsl = IsEnableSsl; 
       smtp.Send(mmMessage); 
      } 
     } 
相關問題