- Products
- Purchase
Order Online Maintenance Renewal Resellers - Support
Helpdesk Online Documentation Web Forum - Our Clients
- About
About us Services Contact
From AfterLogic Wiki
The sample downloads new messages only, skipping already received messages, and displays "Subject:" for each new message.
Note: This sample provides only simple version of the code. More detailed documentation and code samples are available in Receiving new messages from POP3 server tutorial.
Basically, the POP3 protocol has no features to determine whether a message has already been downloaded. However, you can implement this with Unique-ID. Unique-ID is a unique identifier of an e-mail on the POP3 server.
Search method of POP3 object returns an array which contains Unique-ID's of all messages in the mailbox. First element of the array contains Unique-ID of the first message in the mailbox, second element - Unique-ID of the second message, and so on.
The idea is as follows...
Firstly, your application must store Unique-ID's of already received messages in a local database.
Next time before you start downloading e-mail, retrieve Unique-ID's for all messages in the mailbox (using Search method) and look up them in the database. If Unique-ID of some message is found in the database, the message is old; otherwise, it is new. Thus you can filter out Unique-ID of every old message.
In real code, sample function IsNewMessage() should query the database for the given Unique-ID value and return True if the Unique-ID was NOT found in the database. In this sample, no real database is used and IsNewMessage() always returns True.
Last thing is to download new messages knowing their Unique-ID's. Since RetrieveSingleMessage method expects message numbers but not Unique-ID's, it is required to get message number from Unique-ID. It's simple: an index of the Unique-ID value in the Unique-ID array is the message number.
' This is main function. It retrieves new messages from ' the POP3 server and shows "Subject:" field of each ' retrieved message. Sub RetrieveNewMessages() Dim objPOP3, objMsg, I ' Array of Unique-IDs (taken from the POP3 server) Dim arrIDs ' Create POP3 object Set objPOP3 = CreateObject("MailBee.POP3") ' Unlock POP3 object objPOP3.LicenseKey = "put your license key here" ' Set POP3 server name objPOP3.ServerName = "mail.server.com" ' Set user credentials objPOP3.UserName = "username" objPOP3.Password = "password" ' Connect to the server and log in the mailbox If objPOP3.Connect Then ' Get Unique-IDs for all messages in the mailbox arrIDs = objPOP3.Search ' Iterate through all messages in the mailbox For I = 1 To objPOP3.MessageCount ' Search Unique-ID of the message in the database If IsNewMessage(arrIDs(I)) Then ' Download new message entirely Set objMsg = objPOP3.RetrieveSingleMessage(I) ' Display the message's Subject MsgBox objMsg.Subject End If Next ' Close the connection objPOP3.Disconnect Else ' Display error information MsgBox "Error #" & objPOP3.ErrCode MsgBox "Server response: " & objPOP3.ServerResponse End If End Sub ' This helper function should lookup the ID in the ' database, and then return True if the ID does not ' exist in the list of already downloaded messages. Function IsNewMessage(ID) ' For demo purposes, the function always returns True. IsNewMessage = True End Function
<% ' This is main function. It retrieves new messages from ' the POP3 server and shows "Subject:" field of each ' retrieved message. Sub RetrieveNewMessages() Dim objPOP3, objMsg, I ' Array of Unique-IDs (taken from the POP3 server) Dim arrIDs As Variant ' Create POP3 object Set objPOP3 = Server.CreateObject("MailBee.POP3") ' Unlock POP3 object objPOP3.LicenseKey = "put your license key here" ' Set POP3 server name objPOP3.ServerName = "mail.server.com" ' Set user credentials objPOP3.UserName = "username" objPOP3.Password = "password" ' Connect to the server and log in the mailbox If objPOP3.Connect Then ' Get Unique-IDs for all messages in the mailbox arrIDs = objPOP3.Search ' Iterate through all messages in the mailbox For I = 1 To objPOP3.MessageCount ' Search Unique-ID of the message in the database If IsNewMessage(arrIDs(I)) Then ' Download entire message Set objMsg = objPOP3.RetrieveSingleMessage(I) ' Display the message's Subject Response.Write objMsg.Subject & "<br>" End If Next ' Close the connection objPOP3.Disconnect Else ' Display error information Response.Write "Error #" & objPOP3.ErrCode & "<br>" Response.Write "Server response: " & objPOP3.ServerResponse End If End Sub ' This helper function should lookup the ID in the ' database, and then return True if the ID does not ' exist in the list of already downloaded messages. Function IsNewMessage(ID) ' For demo purposes, the function always returns True. IsNewMessage = True End Function %>
See Also:
"Receiving new messages from POP3 server" Tutorial
Search Method