2013-04-03 48 views
0

我有一個模塊正在調用這樣的vb.net控制檯應用程序的存儲過程。這個存儲過程有很多打印語句。當我執行這個控制檯應用程序時,它將在控制檯中顯示消息。我想抓住這些消息,並通過郵件發送如何獲取這些控制檯消息併發送郵件消息

Dim Con As New SqlConnection(connectionString) 
Dim cmd As New SqlCommand("SaveReceiptsFromFile_GFF", Con) 

Try 
    Using Con 
     Con.Open() 

     cmd.ExecuteNonQuery() 

    End Using 
Catch ex As SqlException 
    Console.WriteLine(ex.Message) 

    sendmailwhenfail() 
End Try 
Con.Close() 

我發送郵件的模塊是這樣的:

Public Shared Sub sendmailwhenfail() 
     Try 
      Dim AnEmailMessage As New MailMessage 
      AnEmailMessage.From = New MailAddress("[email protected]") 
      AnEmailMessage.To.Add("[email protected]") 
      AnEmailMessage.Subject = "this is test subject" 
      AnEmailMessage.Body = "this is test body" 
      AnEmailMessage.Priority = MailPriority.High 
      Dim SimpleSMTP As New SmtpClient("smtp.gmail.com") 
      With SimpleSMTP 
       .Port = 587 
       .EnableSsl = True 
       .Credentials = _ 
       New NetworkCredential("[email protected]", "Tester123") 
       .Send(AnEmailMessage) 
      End With 
      MsgBox("Email sent") 
     Catch ex As Exception 
      MsgBox(ex.Message, MsgBoxStyle.Critical) 
     End Try 
    End Sub 

失敗時,一切工作正常,我的問題是,如何抓住這些控制檯消息並在郵件中發送?

回答

0

取同一異常ex.Message,ex.Source和使用它作爲你的方法sendmailwhenfail(參數),例如:

try 
{ 
    // do your thing 
} 
catch (Exception ex) 
{ 
    Console.Writeline(String.Format("{0} :: {1}", ex.Source, ex.Message)); 
    SendMail(ex.Source, ex.Message); 
} 

所以,無論該錯誤消息是在異常也將是傳遞給SendMail方法。

+0

我sendmailwhenfail()沒有任何參數,雖然 – 2013-04-03 18:51:57

+0

超載它,添加一個或兩個它... – riaandelange 2013-04-03 19:02:03