【发布时间】:2016-12-05 05:12:42
【问题描述】:
您好,我有一个托管的 Windows Server 2008 R2 Enterprise 和一个购买的域名。我已将我域上的所有内容都指向我服务器的 dns,并将我的 ASP.Net 站点上传到 IIS。我还设置了 SMTP 功能,所以现在我尝试从我的 SMTP 发送电子邮件,但我不能,因为应用程序说用户未经过身份验证。 这是我的页面的源代码:
MailMessage activationMail = new MailMessage();
activationMail.From = new MailAddress("no-reply@mydomain.com", "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);
注意:我的域名与林的域不同。我也尝试将我的森林域设置为 client.Host 但结果相同。我的 Web.config 上有这些设置
<mailSettings>
<smtp from="no-reply@mydomain">
<network defaultCredentials="false" host="localhost" />
</smtp>
</mailSettings>
我的 SMTP 服务器的设置如下:
- IP 地址 = 我的服务器的 IP
- 身份验证 = 检查标准和 Windows 身份验证,检查 TSL,默认域设置为我的域(不是我的 MX 记录 mail.domain)。不检查匿名身份验证。
- Connection = 只有我的服务器的 IP 可以访问
- 中继 = 只有我购买的域(不是 MX 记录)可以访问
- 出站安全 = 标准身份验证(来自 AD DS 的用户 - 与上面我的 cs 文件中的凭据相同),启用 TLS
- 高级交付选项 = 我在那里设置了我的域名(不是 MX 记录 - 给我一个错误)
有人知道我做错了什么吗?
【问题讨论】: