Asp.net 已验证邮件发送在.NET中不起作用

Asp.net 已验证邮件发送在.NET中不起作用,asp.net,authentication,sendmail,mailsettings,Asp.net,Authentication,Sendmail,Mailsettings,我有一个从.net应用程序发送邮件的脚本 如果我不想延迟接收邮件,我的主机提供商要求对邮件进行身份验证(目前延迟距离发送时间几乎一天) 我已经构建了带有身份验证的邮件发送脚本,但它不起作用-它不会产生任何错误或异常,但邮件仍然不会立即收到 在另一方面,类似的脚本在经典的asp作品,我收到邮件立即 我错过什么了吗 这是asp脚本(可以正常工作): 以下是我的web.config设置: <system.net> <mailSettings> <s

我有一个从.net应用程序发送邮件的脚本

如果我不想延迟接收邮件,我的主机提供商要求对邮件进行身份验证(目前延迟距离发送时间几乎一天)

我已经构建了带有身份验证的邮件发送脚本,但它不起作用-它不会产生任何错误或异常,但邮件仍然不会立即收到

在另一方面,类似的脚本在经典的asp作品,我收到邮件立即

我错过什么了吗

这是asp脚本(可以正常工作):

以下是我的web.config设置:

  <system.net>
    <mailSettings>
      <smtp>
        <network host="mail.mydomain.com" userName="myusername" password="mypassword" port="25" />
      </smtp>
    </mailSettings>
  </system.net>

web.config设置是正确的,但即使我手动将服务器设置输入到类中,它也不起作用

谢谢

试试这个:

 MailMessage mailMsg = new MailMessage();
    mailMsg.To.Add("test@hotmail.com");
                // From
    MailAddress mailAddress = new MailAddress("you@hotmail.com");
    mailMsg.From = mailAddress;

    // Subject and Body
    mailMsg.Subject = "subject";
    mailMsg.Body = "body";

    // Init SmtpClient and send on port 587 in my case. (Usual=port25)
    SmtpClient smtpClient = new SmtpClient("mailserver", 587);
    System.Net.NetworkCredential credentials = 
       new System.Net.NetworkCredential("username", "password");
    smtpClient.Credentials = credentials;

    smtpClient.Send(mailMsg);

事实证明,问题出在托管提供商方面。不确定他们做了什么,但它最终开始工作。

尝试处理SmtpClient.SendCompleted事件并查看事件args中的错误您需要在SmtpClient中设置端口,例如587请参阅下面给出的答案。手动设置端口不起作用怎么办?它抛出异常?我看不出你的.net代码有任何错误。您确定已从您的网络配置中正确检索到主机、端口和凭据的值吗?@Dura,是的,这些值是正确的。不管怎样,我说如果使用手动值而不是web.config,事件将不起作用。它不会改变任何东西。电子邮件仍然延迟。
  <system.net>
    <mailSettings>
      <smtp>
        <network host="mail.mydomain.com" userName="myusername" password="mypassword" port="25" />
      </smtp>
    </mailSettings>
  </system.net>
 MailMessage mailMsg = new MailMessage();
    mailMsg.To.Add("test@hotmail.com");
                // From
    MailAddress mailAddress = new MailAddress("you@hotmail.com");
    mailMsg.From = mailAddress;

    // Subject and Body
    mailMsg.Subject = "subject";
    mailMsg.Body = "body";

    // Init SmtpClient and send on port 587 in my case. (Usual=port25)
    SmtpClient smtpClient = new SmtpClient("mailserver", 587);
    System.Net.NetworkCredential credentials = 
       new System.Net.NetworkCredential("username", "password");
    smtpClient.Credentials = credentials;

    smtpClient.Send(mailMsg);