Listen Method

Listen pop3 queue request in specified port.

[Syntax]
C++: HRESULT Listen( long Port, long MaxConnections, long* pVal )
Visual Basic: Listen( Port As Long, MaxConnections As Long ) As long
C#: long Listen( long Port, long MaxConnections )

Parameters

Port

Port to be Listened. It is between 2000 and 10000.

MaxConnections

Maximum concurrent connections. Default value is 5.

Return Value

If this method succeeds, the return value is zero. If it fails, the return value is non-zero.

Remarks

Pop3Request object and Pop3Queue object enables ASP/ASP.NET application to retrieve email in background. Suppose that there are many emails in specified pop3 mailbox, if your ASP/ASP.NET application retrieve all emails in this mailbox directly, it would take a long time which may cause ASP/ASP.NET timeout. User could get a response from the application until the task is finished.

How does Pop3Queue work?

Firstly, an ASP/ASP.NET application collects pop3 account information and builds a new Pop3Request object based on specified pop3 account. Secondly, it sends this Pop3Request object to local/remote application which runs in background. Finally, the application return to the user and the server application performs task in background.

Usage Example

[ASP/VBScript]
[client application]
This subroutine demonstrates how to send a request to background application.
Sub SendRequest
  Dim oPop3Request, oPop3Queue
  Dim pop3Server, user, password, appAddr, port 
  
  appAddr = "127.0.0.1"
  port = 5157

  pop3Server = "mail.adminsystem.net"
  user = "test@adminsystem.net"
  password = "test"

  Set oPop3Request = Server.CreateObject("ANPOP.Pop3Request")
  Set oPop3Queue = Server.CreateObject("ANPOP.Pop3Queue" )

  oPop3Request.Pop3Server = pop3Server
  oPop3Request.UserName = user
  oPop3Request.Password = password
  oPop3Request.LFlag = 1 'any numeric value which associated with this request
  oPop3Request.SFlag = "any" 'any string value which associated with this request

  If oPop3Queue.SendRequest( appAddr, port, oPop3Request ) = 0 Then
    Response.Write "send request succeeded"
  Else
    Response.Write "send request failed, "
  End 
End Sub

[background application]
This subroutine demonstrates how to receive a request from ASP/ASP.NET.
Sub Receive
  Dim oPop3Queue As ANPOPLib.Pop3Queue
  Dim oPop3Reqest As ANPOPLib.Pop3Request
  Dim MaxConnections, Port As Integer
  
  MaxConnections = 5
  Port = 5157
  Set oPop3Queue = new ANPOPLib.Pop3Queue
  If oPop3Queue.Listen( Port, MaxConnections ) <> 0 Then
	MsgBox "bind port failed"
	Exit Sub
  End If
  
  Do While True
	Set oPop3Request = oPop3Queue.Receive(1)
	If Not (oPop3Request Is Nothing) Then
      'now a request received, then use another subroutine to retrieve email 
      Call RetrieveEmail( oPop3Request.Pop3Server, _
		                oPop3Request.UserName, _ 
		                oPop3Request.Password )
	End If
	Nothing received
	DoEvents
  Loop
End Sub
[ASP.NET/C#]
[client application]
This subroutine demonstrates how to send a request to background application.
public void SendRequest()
{
  string pop3Server = "mail.adminsystem.net";
  string user = "test@adminsystem.net";
  string password = "test";
  string appAddr = "127.0.0.1";
  int port = 5157;
  
  pop3RequestClass oPop3Request =
                      (pop3RequestClass)Server.CreateObject("ANPOP.Pop3Request");
  Pop3QueueClass oPop3Queue = 
                      (Pop3QueueClass)Server.CreateObject("ANPOP.Pop3Queue");
  
  oPop3Request.Pop3Server = pop3Server;
  oPop3Request.UserName = user;
  oPop3Request.Password = password;
  oPop3Request.LFlag = 1; //any numeric value associated with this request
  oPop3Request.SFlag = "any"; //any string value associated with this request
 
  if( oPop3Queue.SendRequest( appAddr, port, oPop3Request ) == 0 )
    Response.Write( "send request succeeded");
  else
    Response.Write( "send request failed, " );
 
 }
 
[background application]
This subroutine demonstrates how to receive a request from ASP/ASP.NET.
public void Receive()
{
  pop3RequestClass oPop3Request = null;
  Pop3QueueClass oPop3Queue = new Pop3QueueClass();
  int MaxConnections = 5, Port = 5157;
  
  if( oPop3Queue.Listen( Port, MaxConnections ) != 0 )
    throw new Exception( "bind 5157 port failed" );
  
  while( true )
  {
    oPop3Request = oPop3Queue.Receive(1);
    if( oPop3Request != null )
    {
      //a request received, then use another subroutine to retrieve email 
      RetrieveEmail( oPop3Request.Pop3Server,
		                oPop3Request.UserName, 
		                oPop3Request.Password );      
    }
    else
      Thread.Sleep(10); //nothing received, sleep sometime
  }
}

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