2011-03-25 80 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