Sample code for 30+ languages & platforms
Java Requires Chilkat v11.0.0+

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

Chilkat2 Java
import com.chilkatsoft.chilkat2.ChilkatException;
import com.chilkatsoft.chilkat2.Email;
import com.chilkatsoft.chilkat2.Http;
import com.chilkatsoft.chilkat2.HttpResponse;
import com.chilkatsoft.chilkat2.JsonObject;
import com.chilkatsoft.chilkat2.StringBuilder;

public class ChilkatExample {

    public static void main(String[] args) {
        // This example requires the Chilkat API to have been previously unlocked.
        // See Global Unlock Sample for sample code.

        Email email = new Email();

        // This example chooses to load an email from a file.
        try {
            email.loadEml("qa_data/eml/testEmail.eml");
        } catch (ChilkatException e) {
            System.out.println(e.getLastErrorText());
            return;
        }

        // Get the email as MIME.
        StringBuilder sbMime = new StringBuilder();
        email.getMimeSb(sbMime);

        Http http = new Http();
        HttpResponse resp = new HttpResponse();

        http.setAuthToken("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.

        String url = "https://www.googleapis.com/upload/gmail/v1/users/me/messages?uploadType=media";
        http.setUncommonOptions("SendGzipped");
        try {
            http.httpSb("POST", url, sbMime, "utf-8", "message/rfc822", resp);
        } catch (ChilkatException e) {
            System.out.println(e.getLastErrorText());
            return;
        }

        http.setUncommonOptions("");

        // A status code of 200 indicates success.
        System.out.println("Response status code: " + resp.getStatusCode());
        System.out.println("Response body:");
        System.out.println(resp.getBodyStr());

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

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

        JsonObject json = new JsonObject();
        json.load(resp.getBodyStr());
        String id = json.stringOf("id");

        // Add the Inbox label to the inserted email so that it appears in Inbox.
        System.out.println("---- Adding the Inbox label to the newly inserted email. ----");

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

        JsonObject json2 = new JsonObject();
        json2.updateString("addLabelIds[0]", "INBOX");

        http.setUrlVar("id", id);
        url = "https://www.googleapis.com/gmail/v1/users/me/messages/{$id}/modify";

        try {
            http.httpJson("POST", url, json2, "application/json", resp);
        } catch (ChilkatException e) {
            System.out.println(e.getLastErrorText());
            return;
        }

        // A status code of 200 indicates success.
        System.out.println("Response status code: " + resp.getStatusCode());
        System.out.println("Response body:");
        System.out.println(resp.getBodyStr());

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

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