Search Method

On success, retrieves UIDs (unique IDs) of all messages in currently opened mailbox. These IDs are returned as an array of strings. Lower bound of the array is 1 and upper bound is MessageCount.

On failure, returns Empty. In Visual Basic or ASP, you can use IsEmpty(Expression) function to handle this situation. Use ErrCode or ErrDesc properties to get detailed error description.

Don't confuse UID with MessageID. UID is a string which is unique for each message in the mailbox. MessageID is a message header (not a number) unique for each distinct message. However, if the same message is placed into mailbox twice, both copies will have the same MessageIDs but different UIDs.

UIDs are very useful for locating new messages because UIDs are retrieved MUCH FASTER then MessageIDs. For example, if you have database table where UIDs of existing messages are stored, it becomes very simple to determine that new messages have arrived. Just call Search method and then search returned values in the UIDs database table. If particular UID is not there, the message is new.

Often (but this depends on mail server implementation), UIDs returned by this method are the same UIDs that returned by Search method of IMAP4 object for "Inbox" folder. However, POP3 UIDs are returned as strings (which may or may not to be presented as numbers) while IMAP4 UIDs are always numbers.

Note: UID functionality is an extension to POP3 protocol, and implementations may vary from server to server (some servers might not support UID at all).

arrUIDs = ObjectName.Search  
Parameters: None 
Return value As Variant Array (1 to MessageCount) of Variant/String, each value is UID of the message. If error has occurred (connection error or UID functionality is not supported), return value is Empty  

Usage example:

Dim Mailer, UIDs, I
'Using visual basic to create object
Set Mailer = CreateObject("MailBee.POP3")
'Using ASP to create object
'Set Mailer = Server.CreateObject("MailBee.POP3")
'In ASP use Response.Write instead of MsgBox
Mailer.LicenseKey = "put your license key here"
If Mailer.Connect("", 110, "MyName", "MyPassword") Then
  UIDs = Mailer.Search ' Get UIDs
  If Not IsEmpty(UIDs) Then
    For I = LBound(UIDs) To UBound(UIDs)
      MsgBox "Message #" & I & " has UID: " & UIDs(I)
  End If
End If

See Also:

RetrieveHeaders Method
MessageCount Property

Message.MessageId Property

IMAP4.Search Method

Copyright © 2002-2022, AfterLogic Corporation. All rights reserved.