多线程发送电子邮件模块

ZOU_SEAFARER 2010-05-13 09:13:01
现在的情况如下:
我建立了一个类是开辟一个线程发送电子邮件,发送成功后返回事件,通知客户端发送成功或者失败。
客户端这样定义Private WithEvents m_SendMail As beconSendEMail = New beconSendEMail()

经过对SendMail 的属性赋值,调用方法,就可以发送邮件了。
事件绑定如下
Private Sub m_SendMail_showReturn(ByVal sender As Object, ByVal message As String, ByVal messageID As Integer) Handles m_SendMail.showReturn




现在需要发送很多邮件(数目不定),邮件的附件和目标都不一致。我该怎么声明多个带事件的SendMail 对象,且能为他的事件绑定一个方法,以处理每一个发送邮件类返回的结果?
For Each s As String In saveFileName
'通常这样定义多个发送电子邮件的类,不过却不能产生发送成功或者失败的事件
dim _SendMail as new SendMail()
_SendMail.UserName = saveUserName(0)
_SendMail.Password = IniInformation.mEmail.Password
_SendMail.mailFrom = IniInformation.mEmail.EmailAddress
_SendMail.mailTo = IniInformation.mKul.DstAddress
_SendMail.mailCC = IniInformation.mKul.cc
_SendMail.mailBCC = IniInformation.mKul.bcc
_SendMail.Subject = IniInformation.mEmail.MailTitle_kul & System.IO.Path.GetFileName(s)
_SendMail.addattachments(s)
_SendMail.StartThread()
Next


以下为beconSendEMail 类中的发送线程中的函数,_SendMail.StartThread后即执行Sendemail函数。

Private Function Sendemail() As Boolean
Dim stmp As New SmtpClient(Server, Integer.Parse(Port))
Dim mMail As MailMessage = New MailMessage()

Try
mMail.From = New MailAddress(mailFrom)
Call setMailCollection(mailTo, mMail.To)
Call setMailCollection(mailCC, mMail.CC)
Call setMailCollection(mailBCC, mMail.Bcc)
mMail.Subject = Subject
mMail.Priority = Priority
mMail.BodyEncoding = mailEncoding
mMail.IsBodyHtml = IsHtml
If IsHtml = True Then
mMail.Body = HtmlBody
Else
mMail.Body = Body
End If
setAttachments(mailAttachments, mMail.Attachments)

stmp.Credentials = New NetworkCredential(UserName, Password) 'set user ID and user Password
stmp.Timeout = Integer.Parse(TimeOut)
stmp.Send(mMail)
mMail.Attachments.Dispose()
mMail.Dispose()
RaiseEvent showReturn(Me, Subject & " 送信成功した。", 0)
Return True
Catch ex As Exception
If Not (mMail.Attachments Is Nothing) Then mMail.Attachments.Dispose()
If Not (mMail Is Nothing) Then mMail.Dispose()
RaiseEvent showReturn(Me, Subject & " 送信失敗した。" & vbCrLf & ex.Message, 1)
Return False
Finally

End Try
End Function
...全文
1110 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
Jessie_Zhang 2010-05-13
  • 打赏
  • 举报
回复
有批量发送邮件的,但不是多线程...学习
水哥阿乐 2010-05-13
  • 打赏
  • 举报
回复
学 习
ZOU_SEAFARER 2010-05-13
  • 打赏
  • 举报
回复
我找到解决方法了
Dim _SendMail As beconSendEMail = New beconSendEMail()
AddHandler _SendMail.showReturn, AddressOf m_SendMail_showReturn
ZOU_SEAFARER 2010-05-13
  • 打赏
  • 举报
回复
AddHandler _SendMail.showReturn, AddressOf m_SendMail_showReturn

c#代码就是
_SendMail.showReturn + = SendMail.showReturn(m_SendMail_showReturn)

16,549

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧