Sample code for 30+ languages & platforms
Dart

Download GMail Message Attachment by ID

See more GMail REST API Examples

Demonstrates how to download a GMail email attachment by the attachment ID.

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 = 'ACCESS_TOKEN';
  http.accept = 'application/json';

  // See the following example:  Get GMail Message (format=full)
  // It shows how to download an email by message ID, and it shows how to parse the JSON
  // response which includes attachment names, ids, and other information.

  // This example will assume we already have the attachment id and filename.

  // This is the attachment ID for a file named "helloWorld.pdf".
  final attachmentId = 'ANGjdJ-oy3aCuZISJKLAhUdaEksCEklbAPyMaWzFgqOMGbPCRkgwgeu_Kttd99C17OBTHROkDZGekibTKWXGfscB5ww7fw4E65_V1dQ-jHhb2TD1Cdm58-BbNw2iDxzptco8iILPiSnLLfFn5Ps7nsRcxHaGTt3r0yqFKCuIYNnPK1vM04BXI_cfzo-HnI4I3tD6oHNHOGVQrL01MdShFQjPELPUjXM8z1qs7Kom-QyvV1iOldUN-66UuhynsmDX-CMM5TIdB-8KD_lmdhf-0DqG8JnCA20XpXyfqwS8XFkPA-t-QSjb7SdkHQFtQ4lz2PcBREFzZ2eI5j0l0Y_dQHRPYTeMwkVl1yl4MfFT4C4iso3VSF-eqaIjiFCbXKCFNyeEIW5WFsv189dhlSqU';

  final messageId = '1712bc1dc22da2a2';

  http.setUrlVar('messageId', messageId);
  http.setUrlVar('attachmentId', attachmentId);

  final url = 'https://www.googleapis.com/gmail/v1/users/userId/messages/{\$messageId}/attachments/{\$attachmentId}';

  // When we download, the response is JSON that contains the attachment data base64url encoded, like this:
  // {
  //  "size": 934,
  //  "data": "JVBERi0xLjM ... CiUlRU9GCg=="
  // }

  final outputFilePath = 'qa_output/helloWorld.pdf';

  // Download into a StringBuilder.
  final sbJson = CkStringBuilder();
  try {
    http.downloadSb(url, 'utf-8', sbJson);
  } on ChilkatException catch (e) {
    print(e.lastErrorText);
    return;
  }

  if (http.lastStatus != 200) {
    // Something failed.
    // the JSON contains an error message.
    print(sbJson.getAsString());
    return;
  }

  // Load into a Chilkat JSON object.
  final json = CkJsonObject();
  json.loadSb(sbJson);

  // Extract the base64url data into a BinData.
  final bd = CkBinData();
  json.bytesOf('data', 'base64url', bd);

  // Save the data to a file.
  bd.writeFile('qa_output/helloWorld.pdf');

  print('Success.');
}