Sample code for 30+ languages & platforms
Xojo Plugin 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 Xojo Plugin Downloads

Xojo Plugin
Dim success As Boolean
success = False

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

Dim imap As New Chilkat.Imap

//  Connect to an IMAP server.
//  Use TLS
imap.Ssl = True
imap.Port = 993
success = imap.Connect("imap.example.com")
If (success = False) Then
    System.DebugLog(imap.LastErrorText)
    Return
End If

//  Login
success = imap.Login("***","***")
If (success = False) Then
    System.DebugLog(imap.LastErrorText)
    Return
End If

//  Select an IMAP mailbox
success = imap.SelectMailbox("Inbox")
If (success = False) Then
    System.DebugLog(imap.LastErrorText)
    Return
End If

Dim email As New Chilkat.Email

Dim uid As Int32
uid = 2014
Dim isUid As Boolean
isUid = True

success = imap.FetchEmail(False,uid,isUid,email)
If (success = False) Then
    System.DebugLog(imap.LastErrorText)
    Return
End If

//  Display the From and Subject
System.DebugLog(email.FromAddress)
System.DebugLog(email.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.
System.DebugLog("---- EMAIL BODY ----")
System.DebugLog(email.Body)
System.DebugLog("--------------------")

//  Display the recipients:
Dim j As Int32
For j = 0 To email.NumTo - 1
    System.DebugLog(email.GetToName(j) + ", " + email.GetToAddr(j))
Next
For j = 0 To email.NumCC - 1
    System.DebugLog(email.GetCcName(j) + ", " + email.GetCcAddr(j))
Next

//  Show the total size of the email, including body and attachments:
System.DebugLog(Str(email.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:
Dim numAttach As Int32
numAttach = imap.GetMailNumAttach(email)
System.DebugLog(Str(numAttach))

For j = 0 To numAttach - 1
    System.DebugLog(imap.GetMailAttachFilename(email,j))
    Dim attachSize As Int32
    attachSize = imap.GetMailAttachSize(email,j)
    System.DebugLog("    size = " + Str(attachSize) + " bytes")
Next

System.DebugLog("--")

//  Disconnect from the IMAP server.
success = imap.Disconnect()