2012-08-09 97 views
0

我有以下用於發送郵件的代碼,並且如果您有網絡連接,它可以完美工作。使用C發送郵件的條件#

MailMessage oMail = new MailMessage(new MailAddress("[email protected]"), 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); 

問題是:如果您沒有網絡連接並訪問此功能,應用程序將崩潰。我不希望發生這種情況。我需要一個條件(如果)來檢查你是否連接到互聯網,但我是新的C#,我不知道一個。

回答

1

一個好的方法是使用try/catch塊這樣的:

MailMessage oMail = new MailMessage(new MailAddress("[email protected]"), 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 
} 
+0

變量'e'從不使用。警告。我如何擺脫這個警告? – AnDr3yy 2012-08-09 15:51:31

+0

變量'e'是異常''對象',如果你不打算使用它,你可以忽略它。但是,它包含有關「異常」(堆棧跟蹤,消息,內部異常等)的信息。如果你看看我更新的例子,你可以看到我可以從它那裏得到'exception'消息。這樣做會刪除警告。 – Gabe 2012-08-09 15:52:39

+1

完美地工作,謝謝! – AnDr3yy 2012-08-09 15:58:17

1

如果這將是一個問題,你應該檢查使您的電子郵件程序之前的網絡連接。

System.Net.NetworkInformation.NetworkInterface.GetIsNetworkAvailable()

這樣,你的用戶不會浪費他的時間找出連接之前寫一個大的電子郵件是不存在的。

if (GetIsNetworkAvailable()) { 
    // your code here 
} 
+0

感謝您的回答。我不嘗試你的方式,但謝謝。 – AnDr3yy 2012-08-09 15:59:40