Sample code for 30+ languages & platforms
Visual FoxPro Requires Chilkat v11.0.0+

Fetch Single Email by UID or Sequence Number

Assuming the UID is known, download a single email by UID from an IMAP mail server.

Chilkat Visual FoxPro Downloads

Visual FoxPro
LOCAL lnSuccess
LOCAL loImap
LOCAL loEmail
LOCAL lnUid
LOCAL lnIsUid
LOCAL j
LOCAL lnNumAttach
LOCAL lnAttachSize

lnSuccess = 0

*  This example requires 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

loEmail = CreateObject('Chilkat.Email')

lnUid = 2014
lnIsUid = 1

lnSuccess = loImap.FetchEmail(0,lnUid,lnIsUid,loEmail)
IF (lnSuccess = 0) THEN
    ? loImap.LastErrorText
    RELEASE loImap
    RELEASE loEmail
    CANCEL
ENDIF

*  Display the From and Subject
? loEmail.FromAddress
? loEmail.Subject

*  Display the Body property, which is the default body.
*  If an email has an HTML body, the Body property contains
*  the HTML source.  Otherwise it contains the plain-text
*  body.
? "---- EMAIL BODY ----"
? loEmail.Body
? "--------------------"

*  Display the recipients:

FOR j = 0 TO loEmail.NumTo - 1
    ? loEmail.GetToName(j) + ", " + loEmail.GetToAddr(j)
NEXT
FOR j = 0 TO loEmail.NumCC - 1
    ? loEmail.GetCcName(j) + ", " + loEmail.GetCcAddr(j)
NEXT

*  Show the total size of the email, including body and attachments:
? STR(loEmail.Size)

*  When a full email is downloaded, we would use the
*  email.NumAttachments property in conjunction with the
*  email.GetMailAttach* methods.
*  However, when an email object contains only the header,
*  we need to access the attachment info differently:
lnNumAttach = loImap.GetMailNumAttach(loEmail)
? STR(lnNumAttach)

FOR j = 0 TO lnNumAttach - 1
    ? loImap.GetMailAttachFilename(loEmail,j)
    lnAttachSize = loImap.GetMailAttachSize(loEmail,j)
    ? "    size = " + STR(lnAttachSize) + " bytes"
NEXT

? "--"

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

RELEASE loImap
RELEASE loEmail