0

SMTPクライアントを使用してメールを送信するWebサイトがいくつかあります。今日まで、すべて正常に動作していましたが、サイトをデバッグしているときに突然メールを送信しようとすると、タイムアウト エラーが発生します。サイトを公開してそこから電子メールを送信しようとすると、問題なく動作します???

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 に答える