Sample code for 30+ languages & platforms
Pascal (Lazarus/Delphi)

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 Pascal (Lazarus/Delphi) Downloads

Pascal (Lazarus/Delphi)
program ChilkatDemo;

// Demonstrates using the Chilkat Pascal wrapper via the C bridge DLL.
// Builds as a console application under Lazarus (FPC) or Delphi.

{$IFDEF FPC}
  {$MODE DELPHI}
{$ENDIF}
{$APPTYPE CONSOLE}

uses
  {$IFDEF UNIX}
  cthreads,
  {$ENDIF}
  SysUtils,
  CkDllLoader,
  Chilkat.Mime,
  Chilkat.StringBuilder,
  Chilkat.Email;

// ---------------------------------------------------------------------------

procedure RunDemo;
var
  success: Boolean;
  mime: TMime;
  email: TEmail;
  i: Integer;
  numRelatedItems: Integer;
  sbContentType: TStringBuilder;

begin
  success := False;

  //  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.
  mime := TMime.Create;

  success := mime.LoadMimeFile('qa_data/eml/TMobileTextMsg.eml');
  //  Show the MIME structure in text format (as opposed to XML format).
  WriteLn(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.

  email := TEmail.Create;

  success := email.LoadEml('qa_data/eml/TMobileTextMsg.eml');

  //  We should see 4 related items.
  WriteLn('Num Related Items = ' + email.NumRelatedItems);
  //  There should be 0 attachments.  
  WriteLn('Num Attachments = ' + email.NumAttachments);

  //  Find the indices of the text/plain related part, and the text/html related part
  i := 0;
  numRelatedItems := email.NumRelatedItems;
  sbContentType := TStringBuilder.Create;
  while i < numRelatedItems do
    begin
      sbContentType.Append(email.GetRelatedContentType(i));
      WriteLn(i + ': ' + sbContentType.GetAsString());
      if (sbContentType.ContentsEqual('text/plain',False)) then
        begin
          WriteLn('---- text/plain part:');
          WriteLn(email.GetRelatedString(i,'utf-8'));
        end;

      sbContentType.Clear();
      i := i + 1;
    end;



  mime.Free;
  email.Free;
  sbContentType.Free;

end;

// ---------------------------------------------------------------------------

begin

  try
    RunDemo;
  except
    on E: Exception do
      WriteLn('Unhandled exception: ', E.ClassName, ': ', E.Message);
  end;

  WriteLn;
  {$IFDEF MSWINDOWS}
  WriteLn('Press Enter to exit...');
  ReadLn;
  {$ENDIF}
end.