Sample code for 30+ languages & platforms
PureBasic

IMAP Capability

Demonstrates how to send the CAPABILITY command to request a listing of capabilities that the IMAP server supports. A capability name which begins with "AUTH=" indicates that the server supports that particular authentication mechanism.

Chilkat PureBasic Downloads

PureBasic
IncludeFile "CkImap.pb"

Procedure ChilkatExample()

    success.i = 0

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

    imap.i = CkImap::ckCreate()
    If imap.i = 0
        Debug "Failed to create object."
        ProcedureReturn
    EndIf

    ; Use TLS
    CkImap::setCkSsl(imap, 1)
    CkImap::setCkPort(imap, 993)
    success = CkImap::ckConnect(imap,"MY-IMAP-DOMAIN")
    If success <> 1
        Debug CkImap::ckLastErrorText(imap)
        CkImap::ckDispose(imap)
        ProcedureReturn
    EndIf

    ; Authenticate
    success = CkImap::ckLogin(imap,"MY-IMAP-LOGIN","MY-IMAP-PASSWORD")
    If success <> 1
        Debug CkImap::ckLastErrorText(imap)
        CkImap::ckDispose(imap)
        ProcedureReturn
    EndIf

    ; Get the list of capabilities:
    caps.s = CkImap::ckCapability(imap)
    Debug "Capabilities: " + caps

    ; Here is an example of the string returned:
    ; * CAPABILITY IMAP4rev1 UNSELECT IDLE NAMESPACE QUOTA ID XLIST CHILDREN X-GM-EXT-1 
    ; UIDPLUS COMPRESS=DEFLATE ENABLE MOVE CONDSTORE ESEARCH UTF8=ACCEPT APPENDLIMIT=35882577
    ; LIST-EXTENDED LIST-STATUS

    ; Chilkat v9.5.0.58 introduces the HasCapability method to
    ; check to see if a particular capability exists:
    If CkImap::ckHasCapability(imap,"QUOTA",caps) = 1
        Debug "IMAP server supports the QUOTA extension."
    EndIf

    If CkImap::ckHasCapability(imap,"IDLE",caps) = 1
        Debug "IMAP server supports IDLE."
    EndIf

    ; Disconnect from the IMAP server.
    success = CkImap::ckDisconnect(imap)


    CkImap::ckDispose(imap)


    ProcedureReturn
EndProcedure