Sample code for 30+ languages & platforms
Dart

Get Contents of a T-Mobile Text Message (as Email)

See more Email Object Examples

How to get the contents of an email that originated as a T-Mobile SMS text.

Chilkat Dart Downloads

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

void main() {
  // First, for the purpose of understanding the structure of the MIME,
  // let's load the MIME into a Chilkat MIME object and examine the MIME structure.
  final mime = CkMime();

  mime.loadMimeFile('qa_data/eml/TMobileTextMsg.eml');
  // Show the MIME structure in text format (as opposed to XML format).
  print(mime.getStructure('text'));

  // The MIME structure for our test email looks like this:
  // multipart/related
  //     text/html
  //     text/plain
  //     image/gif
  //     image/gif
  //     image/gif

  // The HTML part is not considered a "related item" because the related items
  // are defined as being related to the HTML part.  Therefore, we should always
  // expect to find a text/html part under a multipart/related.  The HTML parts
  // is simply the HTML body, and the other parts are the related items.
  // If the text/plain part was to be considered as an alternative body,
  // then a properly structured email would include a multipart/alternative structure.

  final email = CkEmail();

  email.loadEml('qa_data/eml/TMobileTextMsg.eml');

  // We should see 4 related items.
  print('Num Related Items = ${email.numRelatedItems}');
  // There should be 0 attachments.  
  print('Num Attachments = ${email.numAttachments}');

  // Find the indices of the text/plain related part, and the text/html related part
  var i = 0;
  final numRelatedItems = email.numRelatedItems;
  final sbContentType = CkStringBuilder();
  while (i < numRelatedItems) {
    sbContentType.append(email.getRelatedContentType(i));
    print('$i: ${sbContentType.getAsString()}');
    if (sbContentType.contentsEqual('text/plain', false)) {
      print('---- text/plain part:');
      print(email.getRelatedString(i, 'utf-8'));
    }

    sbContentType.clear();
    i++;
  }
}