如何从我的SMTP服务器发送电子邮件?

问题描述:

你好,我有一个托管的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记录 - 给我一个错误)

有谁知道我在做什么错?

添加以下代码,你没有提供的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

尝试添加这两种路线:

client.EnableSsl = false; 
client.Credentials = cr;