OnSent Event

Occur when an email was sent by FastSender object.

[Syntax]
C++: HRESULT OnSent( long lRet, BSTR ErrDesc, long nKey, 
                   BSTR tParam, BSTR Sender, BSTR Recipients )
Visual Basic: Object_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  )
Visual Basic.NET: Object_OnSent( ByVal lRet As Integer, ByVal ErrDesc As String, _
                   ByVal nKey As Integer, ByVal tParam As String, _ 
                   ByVal Sender As String, ByVal Recipients As String  )
C#: void OnSent( int lRet, string ErrDesc, int nKey, 
                   string tParam, string Sender, string Recipients )

Parameter:

lRet

It is zero if succeeded; otherwise it is non-zero.

ErrDesc

Error description if sending email failed.

nKey

It is equal to the value of nKey parameter specified in Send or SendByPickup method.

tParam

It is equal to the value of tParam parameter specified in Send or SendByPickup method.

Sender

Sender's email address.

Recipients

Recipients' email addresses. Multiple addresses are separated by semicolon(;)

Usage Example:

[Visual Basic]
Option Explicit

Private WithEvents m_oFastSender As AOSMTPLib.FastSender
Private m_oSmtp As AOSMTPLib.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 AOSMTPLib.FastSender
    Set m_oSmtp = New AOSMTPLib.Mail
    m_oFastSender.MaxThreads = 10 'set maximum work threads
  End If
  
  m_oSmtp.FromAddr = "test@adminsystem.net"
  m_oSmtp.ServerAddr = "mail.adminsystem.net"
  'if you dont have a smtp server, then use following code:
  'FastSender would send email via dns lookup
  'm_oSmtp.ServerAddr = ""
        
  recipientAddr(0) = "test@adminsystem.net"
  recipientAddr(1) = "test1@adminsystem.net"
  recipientAddr(2) = "test2@adminsystem.net"
  
  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
[C#]
using System;
using AOSMTPLib;

namespace FastSenderConsole
{
  class FastSender
  {
    private static FastSenderClass m_oFastSender = null;
    private static MailClass m_oSmtp = null;

    [STAThread]
    static void Main(string[] args)
    {
      string []recipientAddr = new string[3];
      if( m_oFastSender == null ||  m_oSmtp == null )
      {
        m_oFastSender = new FastSenderClass();
        m_oSmtp = new MailClass();
        m_oFastSender.MaxThreads = 10; //set maximum work threads
        bind OnSent event to OnSent method
        _IFastSenderEvents_OnSentEventHandler OnSentEventHandler = 
                        new _IFastSenderEvents_OnSentEventHandler(OnSent);
        m_oFastSender.OnSent += OnSentEventHandler;
      }
      
      m_oSmtp.FromAddr = "test@adminsystem.net";
      m_oSmtp.ServerAddr = "mail.adminsystem.net";
      //if you dont have a smtp server, then use following code:
      //FastSender would send email via dns lookup
      //m_oSmtp.ServerAddr = ""
      
      recipientAddr[0] = "test@adminsystem.net";
      recipientAddr[1] = "test1@adminsystem.net";
      recipientAddr[2] = "test2@adminsystem.net";
      
      for( int i = 0; i < 3; i++ )
      {
        m_oSmtp.ClearRecipient();
        m_oSmtp.AddRecipient( recipientAddr[i], recipientAddr[i], 0 );
        m_oSmtp.Subject = "test subject";
        m_oSmtp.BodyText = "body";
        m_oFastSender.Send( m_oSmtp, i, "any" );
      }
      
      while( m_oFastSender.GetQueuedCount() > 0 )
        System.Threading.Thread.Sleep(50);
        
      while( m_oFastSender.GetCurrentThreads() != m_oFastSender.GetIdleThreads())
        System.Threading.Thread.Sleep(50); //Wait for all email sent
        
      Console.WriteLine( "all email sent" );
      System.Threading.Thread.Sleep(10000);
    }
    
    static void OnSent( int lRet, 
                        string ErrDesc, 
                        int  nKey, 
                        string tParam, 
                        string Sender, 
                        string Recipients )
    {
      if( lRet == 0 )
        Console.WriteLine("{0} email sent successfully", nKey);
      else
        Console.WriteLine( "{0} email: {1}", nKey, ErrDesc );
    }
  }
}

See Also

Send method
SendByPickup method


2001-2007 © Copyright AdminSystem Software Limited. All rights reserved.