Sample code for 30+ languages & platforms
Dart

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

Dart
import 'package:chilkat/chilkat.dart';

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

  final http = CkHttp();
  http.authToken = 'GMAIL-ACCESS-TOKEN';

  // The id of the GMail message to download.
  final id = '166e50fed0b9b0cb';
  final userId = 'me';

  http.setUrlVar('userId', 'me');
  http.setUrlVar('id', id);

  // Fetch the email.
  final url = 'https://www.googleapis.com/gmail/v1/users/{\$userId}/messages/{\$id}?format=raw';
  final sbJson = CkStringBuilder();
  try {
    http.downloadSb(url, 'utf-8', sbJson);
  } on ChilkatException catch (e) {
    print(e.lastErrorText);
    return;
  }

  final json = CkJsonObject();
  json.loadSb(sbJson);
  json.emitCompact = false;

  if (http.lastStatus != 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..
  final sbRaw = CkStringBuilder();
  json.stringOfSb('raw', sbRaw);
  sbRaw.decode('base64url', 'utf-8');

  final email = CkEmail();
  email.setFromMimeSb(sbRaw);

  // Now we can use the email API to do whatever we desire..
  print('From: ${email.fromAddress}');
  print('Subject: ${email.subject}');
  // ...
}