Sample code for 30+ languages & platforms
Dart

Get the Total Size of an IMAP Message

See more IMAP Examples

Demonstrates the Chilkat Imap.GetMailSize method, which returns the complete server-reported size of a message in bytes, including attachment data. The only argument is the Email. This example fetches only the headers and prints the full message size.

Background: The server reports each message's total size, so this value is available even when only the headers were downloaded. That lets a client show a size column in a message list, sort by size, or warn the user before downloading an unusually large message — all without fetching the full body first.

Chilkat Dart Downloads

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

void main() {
  // Demonstrates the Imap.GetMailSize method, which returns the complete server-reported size
  // of a message in bytes, including attachments.  The only argument is the Email.

  final imap = CkImap();

  imap.ssl = true;
  imap.port = 993;

  try {
    imap.connect('imap.example.com');
  } on ChilkatException catch (e) {
    print(e.lastErrorText);
    return;
  }

  try {
    imap.login('user@example.com', 'myPassword');
  } on ChilkatException catch (e) {
    print(e.lastErrorText);
    return;
  }

  try {
    imap.selectMailbox('Inbox');
  } on ChilkatException catch (e) {
    print(e.lastErrorText);
    return;
  }

  // Fetch only the message headers.  Attachment bodies are NOT downloaded, but the ckx-imap-*
  // metadata describing the attachments is present, so the attachment info methods still work.
  final headersOnly = true;
  final useUid = false;
  final seqNum = 1;
  final email = CkEmail();
  try {
    imap.fetchEmail(headersOnly, seqNum, useUid, email);
  } on ChilkatException catch (e) {
    print(e.lastErrorText);
    return;
  }

  final sizeBytes = imap.getMailSize(email);
  print('Total message size: $sizeBytes bytes');

  try {
    imap.disconnect();
  } on ChilkatException catch (e) {
    print(e.lastErrorText);
    return;
  }
}