【问题标题】:How can I send emails from my SMTP server?如何从我的 SMTP 服务器发送电子邮件?
【发布时间】: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 记录 - 给我一个错误)

有人知道我做错了什么吗?

【问题讨论】:

    标签: c# asp.net email smtp


    【解决方案1】:

    尝试添加这两行:

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

    【讨论】:

      【解决方案2】:

      添加以下代码,因为您尚未向 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);
      

      【讨论】:

      • 感谢您注意到我有多愚蠢...但我仍然遇到同样的错误...还有什么我可能做错了吗?
      • 一切看起来都很好。您确定凭据正确吗?
      • 好吧,我将指定的用户添加到 AD DS 用户和组中,并使用正确的密码在我的 cs 文件中尝试了用户名作为 HOST\User 和 User。我对 Windows Server 有点陌生,很多时候我不太清楚自己在做什么,例如,我在 web.config 中将 defaultcredentials 更改为 false,并且 IIS 中的 SMTP 设置更改为 No authentication but in the SMTP server设置我设置了需要身份验证...我没有尝试 user@serverdomain.com 用户名,因为我购买的域与森林的域不一样...
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-17
      • 2021-10-01
      • 2017-01-30
      • 2013-04-05
      相关资源
      最近更新 更多