0

私はメールを送信するための次のコードを持っています、そしてあなたがネットワーク接続を持っているならそれは完全に機能します。

MailMessage oMail = new MailMessage(new MailAddress("andr3yy.design@yahoo.com"), new MailAddress(setare[0].email));
        oMail.Subject = "Subject";
        oMail.Body = "Body";
        SmtpClient oSmtp = new SmtpClient();
        oSmtp.Host = "smtp.mail.yahoo.com";          
        oSmtp.Credentials = new NetworkCredential("andr3yy.design", "password");
        oSmtp.EnableSsl = false;
        oSmtp.Port = 587;
        oSmtp.Send(oMail);

問題は次のとおりです。ネットワーク接続がなく、この機能にアクセスすると、アプリケーションがクラッシュします。私はこれが起こらないようにしたい。インターネットに接続しているかどうかを確認するための条件(if)が必要ですが、C#を初めて使用するため、条件がわかりません。

4

2 に答える 2

1

良いアプローチは、これにtry/catchブロックを使用することです。

MailMessage oMail = new MailMessage(new MailAddress("andr3yy.design@yahoo.com"), new MailAddress(setare[0].email)){
   Subject = "Subject",
   Body = "Body"
};

SmtpClient oSmtp = new SmtpClient() {
   Host = "smtp.mail.yahoo.com",          
   Credentials = new NetworkCredential("andr3yy.design", "password"),
   EnableSsl = false,
   Port = 587
};

try{
        oSmtp.Send(oMail);
} 
catch(Exception e) { 

    string message = e.Message;
    // this will handle no connection to the internet, along with other possible exceptions
}
于 2012-08-09T15:46:15.197 に答える
1

これが問題になる場合は、電子メールルーチンを有効にする前に、ネットワーク接続を確認する必要があります。

System.Net.NetworkInformation.NetworkInterface.GetIsNetworkAvailable()

そうすれば、接続が存在しないことを確認する前に、ユーザーが大きなメールを書くのに時間を無駄にすることはありません。

if (GetIsNetworkAvailable()) {
  // your code here
}
于 2012-08-09T15:50:02.083 に答える