FastSender Object


EASendMailObj consists of two objects: IMail and IFastSender. IMail interface provides the basis of sending email. It supports CC, BCC, multiple attachments and ESMTP authentication. It fully supports asynchronous operating mode and event driving. It also provides advanced features such as embedded picture, alternative text, email digital signature and email encryption. IFastSender interface enables your application to send mass email in a threadings-pool with highest performance. Both IMail and IFastSender can send email under SSL/TLS channel.

Properties

MaxThreads

Maximum no. of worker thread for sending email.

ComputerName

Domain name to send in HELO/EHLO command.

Methods

ClearQueuedMails

Remove all unsent emails from FastSender object.

GetCurrentThreads

Get total count of current worker threads in FastSender object.

GetIdleThreads

Get the total count of current idle worker threads in FastSender object.

GetQueuedCount

Get total count of unsent emails in FastSender object.

Send

Submit email to threading-pool of FastSender object.

SendByPickup

Submit email to threading-pool of FastSender object for sending email by IIS SMTP service pickup.

StopAllThreads

Stop all worker threads in FastSender object.

Test

Submit email to threading-pool of FastSender object for validating email address.

Events

OnSent

Occur when an email was sent by FastSender object.

The following code demonstrates how to use FastSender object to send mass emails.

[VB6, VBA - Send Mass Email with Multiple Threads]

Option Explicit
 
Const ConnectNormal = 0
Const ConnectSSLAuto = 1
Const ConnectSTARTTLS = 2
Const ConnectDirectSSL = 3
Const ConnectTryTLS = 4

Private WithEvents m_oFastSender As EASendMailObjLib.FastSender
Private m_oSmtp As EASendMailObjLib.Mail
 
Private Sub SendEmail()
  Dim recipientAddr(3) As String
  Dim i As Integer
  
  If m_oFastSender Is Nothing Or m_oSmtp Is Nothing Then
    Set m_oFastSender = New EASendMailObjLib.FastSender
    Set m_oSmtp = New EASendMailObjLib.Mail
    ' for evaluation usage, please use "TryIt" as the license code.
    m_oSmtp.LicenseCode = "TryIt"    

    m_oFastSender.MaxThreads = 10 'set the maximum no. of worker threads
  End If
  
  '  Your SMTP server address.
  m_oSmtp.ServerAddr = "smtp.emailarchitect.net" 

  '  User and password for ESMTP authentication
  m_oSmtp.UserName = "test@emailarchitect.net" 
  m_oSmtp.Password = "testpassword" 

  '  If server supports SSL/TLS connection, SSL/TLS is used automatically.
  m_oSmtp.ConnectType = ConnectTryTLS
        
  m_oSmtp.FromAddr = "test@emailarchitect.net"

  recipientAddr(0) = "test@adminsystem.com"
  recipientAddr(1) = "test1@adminsystem.com"
  recipientAddr(2) = "test2@adminsystem.com"
  
  For i = 0 To 2
    m_oSmtp.ClearRecipient
    m_oSmtp.AddRecipient recipientAddr(i), recipientAddr(i), 0
    m_oSmtp.Subject = "test subject"
    m_oSmtp.BodyText = "test body"

    Call m_oFastSender.Send(m_oSmtp, i, "any")
  Next
  
End Sub
 
Private Sub m_oFastSender_OnSent(ByVal lRet As Long, _
                                 ByVal ErrDesc As String, _
                                 ByVal nKey As Long, _ 
                                 ByVal tParam As String,  _
                                 ByVal Sender As String, _ 
                                 ByVal Recipients As String)
  If lRet = 0 Then
    MsgBox nKey & " email was sent successfully"
  Else
    MsgBox nKey & ": " & ErrDesc
  End If
End Sub

Online Tutorials

Send Bulk Email with Multiple Threads in Visual C++
Send Bulk Email with Multiple Threads in VB6
Send Bulk Email with Multiple Threads in Delphi

See Also

Programming with FastSender
Work with EASendMail Service(Mail Queuing)