Smtp电子邮件不是从我的本地主机发送,而是从我的服务器发送

时间:2013-10-30 19:08:28

标签: c#

我有几个网站,我使用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);

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

2 个答案:

答案 0 :(得分: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/

的样本

答案 1 :(得分:0)

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