0

我有几个网站,我使用 smtp 客户端发送邮件。直到今天,一切正常,但是当我调试任何站点并尝试发送邮件时,突然出现超时错误。如果我发布我的网站并尝试从中发送电子邮件,它工作正常???

SmtpClient mySmtpClient = new SmtpClient("mail.ACCOUNT.co.za");

    // set smtp-client with basicAuthentication
    mySmtpClient.UseDefaultCredentials = false;
    System.Net.NetworkCredential basicAuthenticationInfo = new
       System.Net.NetworkCredential("ACCOUNTNAME", "PASSWORD");
    mySmtpClient.Credentials = basicAuthenticationInfo;

    // add from,to mailaddresses
    MailAddress from = new MailAddress("ACCOUNTEMAIL");
    MailAddress to = new MailAddress("EMAILADDRESS");
    MailMessage myMail = new System.Net.Mail.MailMessage(from, to);

    // add ReplyTo
    MailAddress replyto = new MailAddress("EMAILADDRESS");
    myMail.ReplyTo = replyto;

    // set subject and encoding
    myMail.Subject = "Password Request";
    myMail.SubjectEncoding = System.Text.Encoding.UTF8;

    // set body-message and encoding
    myMail.Body = "MESSAGE";
    myMail.BodyEncoding = System.Text.Encoding.UTF8;
    // text or html
    myMail.IsBodyHtml = true;
    mySmtpClient.Send(myMail);

昨天它工作正常,我没有改变任何东西。

4

2 回答 2

2

这可能是网络问题,不允许您从计算机访问 smtp 服务器。

调试时,我通常禁用 smtp 邮件的网络发送,而是将所有外发邮件重定向为文件保存在临时目录中。这使得调试变得更加容易,并且没有真实用户意外收到电子邮件的风险。

将以下部分添加到您的开发web.config中 - 无需更改代码。

<system.net>
  <mailSettings>
    <smtp deliveryMethod="SpecifiedPickupDirectory" from="noreply@example.org">
      <specifiedPickupDirectory pickupDirectoryLocation="c:\temp" />
      <!-- The network host setting isn't used, but without it an exception
      occurs when disposing of the SmtpClient.-->
      <network host="localhost"/>
    </smtp>
  </mailSettings>
</system.net>

样本取自http://coding.abel.nu/2012/04/send-smtpclient-mails-to-disk/

于 2013-10-30T19:30:17.523 回答
0

好的,如果其他人有这个问题。执行 telnet 并查看是否可以连接到 SMTP 服务器。我的问题是我的网络在我不知情的情况下被更改,它开始阻止我的电子邮件。

于 2013-10-31T16:30:33.377 回答