Sample code for 30+ languages & platforms
DataFlex

Download a Specific GMail Message into a Chilkat Email Object

See more GMail REST API Examples

Demonstrates how to download a GMail message into a Chilkat Email object.

Chilkat DataFlex Downloads

DataFlex
Use ChilkatAx-win32.pkg

Procedure Test
    Boolean iSuccess
    Handle hoHttp
    String sId
    String sUserId
    String sUrl
    Variant vSbJson
    Handle hoSbJson
    Handle hoJson
    Variant vSbRaw
    Handle hoSbRaw
    Handle hoEmail
    String sTemp1
    Integer iTemp1

    Move False To iSuccess

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

    Get Create (RefClass(cComChilkatHttp)) To hoHttp
    If (Not(IsComObjectCreated(hoHttp))) Begin
        Send CreateComObject of hoHttp
    End
    Set ComAuthToken Of hoHttp To "GMAIL-ACCESS-TOKEN"

    // The id of the GMail message to download.
    Move "166e50fed0b9b0cb" To sId
    Move "me" To sUserId

    Get ComSetUrlVar Of hoHttp "userId" "me" To iSuccess
    Get ComSetUrlVar Of hoHttp "id" sId To iSuccess

    // Fetch the email.
    Move "https://www.googleapis.com/gmail/v1/users/{$userId}/messages/{$id}?format=raw" To sUrl
    Get Create (RefClass(cComChilkatStringBuilder)) To hoSbJson
    If (Not(IsComObjectCreated(hoSbJson))) Begin
        Send CreateComObject of hoSbJson
    End
    Get pvComObject of hoSbJson to vSbJson
    Get ComDownloadSb Of hoHttp sUrl "utf-8" vSbJson To iSuccess
    If (iSuccess <> True) Begin
        Get ComLastErrorText Of hoHttp To sTemp1
        Showln sTemp1
        Procedure_Return
    End

    Get Create (RefClass(cComChilkatJsonObject)) To hoJson
    If (Not(IsComObjectCreated(hoJson))) Begin
        Send CreateComObject of hoJson
    End
    Get pvComObject of hoSbJson to vSbJson
    Get ComLoadSb Of hoJson vSbJson To iSuccess
    Set ComEmitCompact Of hoJson To False

    Get ComLastStatus Of hoHttp To iTemp1
    If (iTemp1 <> 200) Begin
        Get ComEmit Of hoJson To sTemp1
        Showln sTemp1
        Showln "Failed."
        Procedure_Return
    End

    // The returned JSON contains something like this:

    // {
    //   "id": "166e50fed0b9b0cb",
    //   "threadId": "166e50fed0b9b0cb",
    //   "labelIds": [
    //     "CATEGORY_SOCIAL",
    //     "INBOX"
    //   ],
    //   "snippet": "...",
    //   "historyId": "582477",
    //   "internalDate": "1541441317000",
    //   "sizeEstimate": 28603,
    //   "raw": "BASE64URL_CONTENT"
    // }

    // The RFC822 MIME of the email is contained in the "raw" as a base64URL encoded string.
    // Let's decode and load into a Chilkat email object..
    Get Create (RefClass(cComChilkatStringBuilder)) To hoSbRaw
    If (Not(IsComObjectCreated(hoSbRaw))) Begin
        Send CreateComObject of hoSbRaw
    End
    Get pvComObject of hoSbRaw to vSbRaw
    Get ComStringOfSb Of hoJson "raw" vSbRaw To iSuccess
    Get ComDecode Of hoSbRaw "base64url" "utf-8" To iSuccess

    Get Create (RefClass(cComChilkatEmail)) To hoEmail
    If (Not(IsComObjectCreated(hoEmail))) Begin
        Send CreateComObject of hoEmail
    End
    Get pvComObject of hoSbRaw to vSbRaw
    Get ComSetFromMimeSb Of hoEmail vSbRaw To iSuccess

    // Now we can use the email API to do whatever we desire..
    Get ComFromAddress Of hoEmail To sTemp1
    Showln "From: " sTemp1
    Get ComSubject Of hoEmail To sTemp1
    Showln "Subject: " sTemp1
    // ...


End_Procedure