2011-03-25 82 views
1

通過Outlook發送郵件時,我有下面的代碼發送電子郵件的人,其詳細信息從數據庫中檢索:收到COMException未處理的錯誤使用VB.Net

Dim oMsg As Outlook._MailItem 
Dim objOL As Outlook.Application 
objOL = New Outlook.Application() 
oMsg = objOL.CreateItem(Outlook.OlItemType.olMailItem) 

con = New OleDbConnection("provider=SQLOLEDB;data source=pc;initial catalog=DB1;integrated security=SSPI") 
cmd = New OleDbCommand("select column1, column2, column3, column4 from table1 where <condition>", con) 
con.Open() 
r = cmd.ExecuteReader 
While r.Read 
    oMsg.Subject = "Subject" 
    oMsg.Body = "Hello " & r.Item(0) & vbLf & vbCr & "How are " & r.Item(1) & " and" & r.Item(2) & vbLf & vbCr & " ? " 
    oMsg.To = r.Item(3).ToString 
    oMsg.Send() 
End While 
con.Close() 
oMsg = Nothing 
objOL = Nothing 

的問題是,它發送後第一封電子郵件,它給了我一個COMException未處理的錯誤,指出該項目已被移動或刪除。這裏有什麼問題?

回答

1

我相信你需要每一次新的Outlook郵件通過循環:

Dim oMsg As Outlook._MailItem 
Dim objOL As Outlook.Application 
objOL = New Outlook.Application() 

con = New OleDbConnection("provider=SQLOLEDB;data source=pc;initial catalog=DB1;integrated security=SSPI") 
cmd = New OleDbCommand("select column1, column2, column3, column4 from table1 where <condition>", con) 
con.Open() 
r = cmd.ExecuteReader 
While r.Read 
    oMsg = objOL.CreateItem(Outlook.OlItemType.olMailItem) 

    oMsg.Subject = "Subject" 
    oMsg.Body = "Hello " & r.Item(0) & vbLf & vbCr & "How are " & r.Item(1) & " and" & r.Item(2) & vbLf & vbCr & " ? " 
    oMsg.To = r.Item(3).ToString 
    oMsg.Send() 

    oMsg = Nothing 
End While 
con.Close() 
objOL = Nothing 
+0

PERFECTO!謝謝! :) – CodingInCircles 2011-03-25 04:53:01

+0

我正在從數據庫檢索ymd格式的日期。我怎樣才能將它在messsage中設置爲dmy?我嘗試過'Format'方法,但郵件本身的日期被替換爲「dd-MM-yyyy」。任何幫助? – CodingInCircles 2011-03-25 05:11:51

+0

自定義日期和時間格式字符串 :http://msdn.microsoft.com/en-us/library/8kb3ddd4.aspx – 2011-03-25 05:45:15