如何从我的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);
答
尝试添加这两种路线:
client.EnableSsl = false;
client.Credentials = cr;
感谢注意到我有多愚蠢......但我仍然得到同样的错误......我还有什么可能做错了吗? – Dev
一切看起来不错。你确定凭证是正确的吗? –
好吧,我添加了指定的用户到AD DS用户和组,我尝试用户名为HOST \用户和用户在我的cs文件中使用正确的密码。我有点新到Windows Server很多次,我几乎不知道我在做什么,例如我在web.config中将defaultcredentials更改为false,并且我在IIS中的SMTP设置更改为无身份验证,但在SMTP服务器中设置我已设置身份验证要求...我没有尝试[email protected]用户名寿,导致我购买的域名与森林的域名不一样... – Dev