Sample code for 30+ languages & platforms
Swift

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 Swift Downloads

Swift

func chilkatTest() {
    var success: Bool = false

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

    let http = CkoHttp()!
    http.authToken = "GMAIL-ACCESS-TOKEN"

    // The id of the GMail message to download.
    var id: String? = "166e50fed0b9b0cb"
    var userId: String? = "me"

    http.setUrlVar(name: "userId", value: "me")
    http.setUrlVar(name: "id", value: id)

    // Fetch the email.
    var url: String? = "https://www.googleapis.com/gmail/v1/users/{$userId}/messages/{$id}?format=raw"
    let sbJson = CkoStringBuilder()!
    success = http.downloadSb(url: url, charset: "utf-8", sb: sbJson)
    if success != true {
        print("\(http.lastErrorText!)")
        return
    }

    let json = CkoJsonObject()!
    json.loadSb(sb: sbJson)
    json.emitCompact = false

    if http.lastStatus.intValue != 200 {
        print("\(json.emit()!)")
        print("Failed.")
        return
    }

    // 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..
    let sbRaw = CkoStringBuilder()!
    json.string(ofSb: "raw", sb: sbRaw)
    sbRaw.decode(encoding: "base64url", charset: "utf-8")

    let email = CkoEmail()!
    email.set(fromMimeSb: sbRaw)

    // Now we can use the email API to do whatever we desire..
    print("From: \(email.fromAddress!)")
    print("Subject: \(email.subject!)")
    // ...

}