Sample code for 30+ languages & platforms
Visual FoxPro

Send a Raw IMAP Command (Binary)

See more IMAP Examples

Demonstrates the Chilkat Imap.RawCommandBd method, which sends raw IMAP command bytes and receives the raw response bytes. The first argument is a BinData holding the command — without an IMAP tag or trailing CRLF, which Chilkat supplies — and the second is a BinData that receives the response.

Background: This is an escape hatch for rare server extensions the API does not otherwise expose. It is intended for commands with a single-line response that do not change Imap object state such as the selected mailbox or message count. For everyday operations, use the dedicated methods, which parse responses and maintain object state for you.

Chilkat Visual FoxPro Downloads

Visual FoxPro
LOCAL lnSuccess
LOCAL loImap
LOCAL loBdCmd
LOCAL loBdResp
LOCAL lcRespStr

lnSuccess = 0

*  Demonstrates the Imap.RawCommandBd method, which sends raw IMAP command bytes and receives
*  the raw response bytes.  The 1st argument is a BinData containing the command (without a tag
*  or trailing CRLF -- Chilkat supplies both), and the 2nd is a BinData that receives the
*  response.

loImap = CreateObject('Chilkat.Imap')

loImap.Ssl = 1
loImap.Port = 993

lnSuccess = loImap.Connect("imap.example.com")
IF (lnSuccess = 0) THEN
    ? loImap.LastErrorText
    RELEASE loImap
    CANCEL
ENDIF

lnSuccess = loImap.Login("user@example.com","myPassword")
IF (lnSuccess = 0) THEN
    ? loImap.LastErrorText
    RELEASE loImap
    CANCEL
ENDIF

*  Build the raw command.  Do not include an IMAP tag or a trailing CRLF.
loBdCmd = CreateObject('Chilkat.BinData')
loBdCmd.AppendString("CAPABILITY","utf-8")

loBdResp = CreateObject('Chilkat.BinData')
lnSuccess = loImap.RawCommandBd(loBdCmd,loBdResp)
IF (lnSuccess = 0) THEN
    ? loImap.LastErrorText
    RELEASE loImap
    RELEASE loBdCmd
    RELEASE loBdResp
    CANCEL
ENDIF

*  Interpret the response bytes as a UTF-8 string.
lcRespStr = loBdResp.GetString("utf-8")
? lcRespStr

lnSuccess = loImap.Disconnect()
IF (lnSuccess = 0) THEN
    ? loImap.LastErrorText
    RELEASE loImap
    RELEASE loBdCmd
    RELEASE loBdResp
    CANCEL
ENDIF

RELEASE loImap
RELEASE loBdCmd
RELEASE loBdResp