2016-07-30 288 views
1

你好,我有一個託管的Windows Server 2008 R2企業版和一個購買的域名。我已經將我的域中的所有內容都指向了服務器的dns,並將我的ASP.Net站點上載到IIS。我還設置了SMTP功能,所以現在我試圖從SMTP發送電子郵件,但是我不能,因爲應用程序說用戶沒有通過身份驗證。 這裏是我的網頁的源代碼:如何從我的SMTP服務器發送電子郵件?

MailMessage activationMail = new MailMessage(); 
       activationMail.From = new MailAddress("[email protected]", "MyGame"); 
       activationMail.To.Add(RegistrationEmail.Text); 
       StreamReader sRead = new StreamReader(Server.MapPath("~/Mails/ActivationMail.html")); 
       string readFile = sRead.ReadToEnd(); 
       string Strcontent = ""; 
       Strcontent = readFile; 
       Strcontent = Strcontent.Replace("[Name]", RegistrationRealName.Text); 
       Strcontent = Strcontent.Replace("[Username]", RegistrationUsername.Text); 
       Strcontent = Strcontent.Replace("[Password]", RegistrationPasswordCreate.Text); 
       Strcontent = Strcontent.Replace("[useractivation]", useractivation); 
       Strcontent = Strcontent.Replace("[Site]", site); 
       Strcontent = Strcontent.Replace("[Facebook]", "facebook"); 
       activationMail.Subject = "My Game - Registration"; 
       activationMail.Body = Strcontent.ToString(); 
       sRead.Close(); 
       activationMail.IsBodyHtml = true; 
       activationMail.BodyEncoding = UTF8Encoding.UTF8; 
       SmtpClient client = new SmtpClient(); 
       client.Host = "mydomain"; 
       NetworkCredential cr = new NetworkCredential(); 
       cr.UserName = "User from AD DS"; 
       cr.Password = "Password of User"; 
       client.UseDefaultCredentials = false; 
       client.DeliveryMethod = SmtpDeliveryMethod.Network; 
       client.Port = 25; 
       client.Timeout = 10000; 
       client.Send(activationMail); 

注:我的域名不符合我林的域相同。我也試圖設置我的森林的域作爲客戶端。主機但同樣的結果。我有我的web.config這些設置

<mailSettings> 
     <smtp from="[email protected]"> 
      <network defaultCredentials="false" host="localhost" /> 
     </smtp> 
    </mailSettings> 

我的SMTP服務器的設置是這些:

  • IP地址=我的服務器的IP
  • 認證= STANDAR & Windows身份驗證檢查,TSL檢查,默認域設置爲我的域(不是我的MX記錄mail.domain)。匿名身份驗證不被檢查。
  • 連接=只有我的服務器的IP訪問
  • 繼電器=只有我購買的域名(不MX記錄)訪問
  • 出站安全= STANDAR認證(用戶可在AD DS - 與那些在我的CS文件相同的憑證以上),TLS啓用
  • 高級交付選項=設置我的域名有(沒有MX記錄 - 給我一個錯誤)

有誰知道我在做什麼錯?

回答

0

添加以下代碼,你沒有提供的SMTP任何憑據:

client.Credentials = cr; 

像:

NetworkCredential cr = new NetworkCredential(); 
cr.UserName = "User from AD DS"; 
cr.Password = "Password of User"; 
client.Credentials = cr; 
client.UseDefaultCredentials = false; 
client.DeliveryMethod = SmtpDeliveryMethod.Network; 
client.Port = 25; 
client.Timeout = 10000; 
client.Send(activationMail); 
+0

感謝注意到我有多愚蠢......但我仍然得到同樣的錯誤......我還有什麼可能做錯了嗎? – Dev

+0

一切看起來不錯。你確定憑證是正確的嗎? –

+0

好吧,我添加了指定的用戶到AD DS用戶和組,我嘗試用戶名爲HOST \用戶和用戶在我的cs文件中使用正確的密碼。我有點新到Windows Server很多次,我幾乎不知道我在做什麼,例如我在web.config中將defaultcredentials更改爲false,並且我在IIS中的SMTP設置更改爲無身份驗證,但在SMTP服務器中設置我已設置身份驗證要求...我沒有嘗試[email protected]用戶名壽,導致我購買的域名與森林的域名不一樣... – Dev

0

嘗試添加這兩種路線:

client.EnableSsl = false; 
client.Credentials = cr; 
相關問題