这是我的解决方案,我用我自己的接口和基类来发送邮件,然后为具体类提供一些伪代码。
Namespace Emailer
Public Interface IBatchableEmailSender
Function SendNextEmail() As Boolean
Sub PrepareBatchEmail()
Property EmailOutput() As EmailOutput
End Interface
Public MustInherit Class BaseBatchEmailSender
Implements IBatchableEmailSender
Private _emailOutput As EmailOutput
Public Property EmailOutput() As EmailOutput Implements IBatchableEmailSender.EmailOutput
Get
Return _emailOutput
End Get
Set(ByVal value As EmailOutput)
_emailOutput = value
End Set
End Property
Public MustOverride Sub PrepareBatchEmail() Implements IBatchableEmailSender.PrepareBatchEmail
Public MustOverride Function SendNextEmail() As Boolean Implements IBatchableEmailSender.SendNextEmail
Public Sub New()
PrepareBatchEmail()
End Sub
End Class
Public Class BatchCustomerEmail
Inherits BaseBatchEmailSender
Private EmailItems As New Generic.List(Of EmailItem)
Private EmailItemNumber As Integer
Private NextEmailItem As EmailItem
Protected Class EmailItem
Public MemberID As Integer
Public Sub New(ByVal memberID As Integer)
Me.MemberID = memberID
End Sub
End Class
Public Overrides Function SendNextEmail() As Boolean
Dim hasEmail As Boolean = EmailItemNumber < EmailItems.Count
If hasEmail Then
' Run script to send email
' If necessary mark email as sent in the database
EmailItemNumber = EmailItemNumber + 1
End If
Return hasEmail
End Function
Public Overrides Sub PrepareBatchEmail()
'
' Creates a Generic.List(of EmailItems) to email.
'
EmailItemNumber = 0
End Sub
End Class
Public Class EmailOutput
Private _text As String
Public Property Text() As String
Get
Return _text
End Get
Set(ByVal value As String)
_text = value
End Set
End Property
Private _html As String
Public Property HTML() As String
Get
Return _html
End Get
Set(ByVal value As String)
_html = value
End Set
End Property
Private _error As String
Public Property ErrorMessage() As String
Get
Return _error
End Get
Set(ByVal value As String)
_error = value
End Set
End Property
Public Sub New(ByVal errorMesage As String, ByVal html As String, ByVal text As String)
Me.ErrorMessage = errorMesage
Me.HTML = html
Me.Text = text
End Sub
End Class
End Namespace
够公平的 - 我会发布我的代码 – digiguru 2008-11-13 14:07:13