Sample code for 30+ languages & platforms
Visual FoxPro

Fetch 1st N Headers of Search Results

Calls Search to get a message set, then downloads the 1st N messages in the message set. There are two equivalent ways of doing it: (1) iterate from 0 to N-1 and download each message individually, or (2) create a new message set that contains the 1st N messages and pass it to FetchHeaders. Both are demonstrated here.

Chilkat Visual FoxPro Downloads

Visual FoxPro
LOCAL lnSuccess
LOCAL loImap
LOCAL lnFetchUids
LOCAL loMessageSet
LOCAL lnNumFound
LOCAL lnUpperBound
LOCAL i
LOCAL lnBUid
LOCAL lnHeaderOnly
LOCAL loEmail

lnSuccess = 0

* This example assumes the Chilkat API to have been previously unlocked.
* See Global Unlock Sample for sample code.

loImap = CreateObject('Chilkat.Imap')

* Connect to an IMAP server.
* Use TLS
loImap.Ssl = 1
loImap.Port = 993
lnSuccess = loImap.Connect("imap.example.com")
IF (lnSuccess = 0) THEN
    ? loImap.LastErrorText
    RELEASE loImap
    CANCEL
ENDIF

* Login
lnSuccess = loImap.Login("****","****")
IF (lnSuccess = 0) THEN
    ? loImap.LastErrorText
    RELEASE loImap
    CANCEL
ENDIF

* Select an IMAP mailbox
lnSuccess = loImap.SelectMailbox("Inbox")
IF (lnSuccess = 0) THEN
    ? loImap.LastErrorText
    RELEASE loImap
    CANCEL
ENDIF

* Get the message IDs of all the emails in the mailbox
* We can choose to fetch UIDs or sequence numbers.
lnFetchUids = 1
loMessageSet = CreateObject('Chilkat.MessageSet')
lnSuccess = loImap.QueryMbx("ALL",lnFetchUids,loMessageSet)
IF (lnSuccess = 0) THEN
    ? loImap.LastErrorText
    RELEASE loImap
    RELEASE loMessageSet
    CANCEL
ENDIF

lnNumFound = loMessageSet.Count
IF (lnNumFound = 0) THEN
    ? "No messages found."
    RELEASE loImap
    RELEASE loMessageSet
    CANCEL
ENDIF

* Get the 1st 10 messages in messageSet.
lnUpperBound = 10
IF (lnNumFound < lnUpperBound) THEN
    lnUpperBound = lnNumFound
ENDIF

i = 0
lnBUid = loMessageSet.HasUids
lnHeaderOnly = 1
loEmail = CreateObject('Chilkat.Email')

DO WHILE i < lnUpperBound

    lnSuccess = loImap.FetchEmail(lnHeaderOnly,loMessageSet.GetId(i),lnBUid,loEmail)
    IF (lnSuccess = 0) THEN
        ? loImap.LastErrorText
        RELEASE loImap
        RELEASE loMessageSet
        RELEASE loEmail
        CANCEL
    ENDIF

    ? STR(i) + ": " + loEmail.Subject

    i = i + 1
ENDDO

* Disconnect from the IMAP server.
lnSuccess = loImap.Disconnect()

RELEASE loImap
RELEASE loMessageSet
RELEASE loEmail