Sample code for 30+ languages & platforms
AutoIt

Insert Email into GMail Folder

See more GMail REST API Examples

Directly inserts a message into only this user's mailbox similar to IMAP APPEND, bypassing most scanning and classification. Does not send a message.

This example will create a Chilkat Email object and upload/insert it into GMail. Then adds the "INBOX" label to the email to make it appear in INBOX

Chilkat AutoIt Downloads

AutoIt
Local $bSuccess = False

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

$oEmail = ObjCreate("Chilkat.Email")

; This example chooses to load an email from a file.
$bSuccess = $oEmail.LoadEml("qa_data/eml/testEmail.eml")
If ($bSuccess = False) Then
    ConsoleWrite($oEmail.LastErrorText & @CRLF)
    Exit
EndIf

; Get the email as MIME.
$oSbMime = ObjCreate("Chilkat.StringBuilder")
$oEmail.GetMimeSb($oSbMime)

$oHttp = ObjCreate("Chilkat.Http")
$oResp = ObjCreate("Chilkat.HttpResponse")

$oHttp.AuthToken = "GMAIL-ACCESS-TOKEN"

; Upload to GMail (does not send, but just inserts).

; IMPORTANT: After uploading/inserting, you won't see the message in the Inbox.
; In your web browser, if you go to "All Mail", you will see it.

Local $sUrl = "https://www.googleapis.com/upload/gmail/v1/users/me/messages?uploadType=media"
$oHttp.UncommonOptions = "SendGzipped"
$bSuccess = $oHttp.HttpSb("POST",$sUrl,$oSbMime,"utf-8","message/rfc822",$oResp)
If ($bSuccess = False) Then
    ConsoleWrite($oHttp.LastErrorText & @CRLF)
    Exit
EndIf

$oHttp.UncommonOptions = ""

; A status code of 200 indicates success.
ConsoleWrite("Response status code: " & $oResp.StatusCode & @CRLF)
ConsoleWrite("Response body:" & @CRLF)
ConsoleWrite($oResp.BodyStr & @CRLF)

; The response body contains JSON.
; A sample successful JSON response:

; {
;  "id": "166f583051d36144",
;  "threadId": "166f5529e079a456"
; }

$oJson = ObjCreate("Chilkat.JsonObject")
$oJson.Load($oResp.BodyStr)
Local $sId = $oJson.StringOf("id")

; Add the Inbox label to the inserted email so that it appears in Inbox.
ConsoleWrite("---- Adding the Inbox label to the newly inserted email. ----" & @CRLF)

; Create the following JSON to be sent in a POST to modify labels for this message.
; {
;   "addLabelIds": [
;     "INBOX"
;     ]
; }

$oJson2 = ObjCreate("Chilkat.JsonObject")
$oJson2.UpdateString("addLabelIds[0]","INBOX")

$oHttp.SetUrlVar("id",$sId)
$sUrl = "https://www.googleapis.com/gmail/v1/users/me/messages/{$id}/modify"

$bSuccess = $oHttp.HttpJson("POST",$sUrl,$oJson2,"application/json",$oResp)
If ($bSuccess = False) Then
    ConsoleWrite($oHttp.LastErrorText & @CRLF)
    Exit
EndIf

; A status code of 200 indicates success.
ConsoleWrite("Response status code: " & $oResp.StatusCode & @CRLF)
ConsoleWrite("Response body:" & @CRLF)
ConsoleWrite($oResp.BodyStr & @CRLF)

; The response body contains JSON.
; A sample successful JSON response:

; {
;  "id": "166f583051d36144",
;  "threadId": "166f583051d36144",
;  "labelIds": [
;   "INBOX"
;  ]
; }