Sample code for 30+ languages & platforms
Visual FoxPro

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