Sample code for 30+ languages & platforms
Delphi DLL

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 Delphi DLL Downloads

Delphi DLL
uses
    Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
    Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Mime, StringBuilder, Email;

...

procedure TForm1.Button1Click(Sender: TObject);
var
success: Boolean;
mime: HCkMime;
email: HCkEmail;
i: Integer;
numRelatedItems: Integer;
sbContentType: HCkStringBuilder;

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 := CkMime_Create();

success := CkMime_LoadMimeFile(mime,'qa_data/eml/TMobileTextMsg.eml');
// Show the MIME structure in text format (as opposed to XML format).
Memo1.Lines.Add(CkMime__getStructure(mime,'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 := CkEmail_Create();

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

// We should see 4 related items.
Memo1.Lines.Add('Num Related Items = ' + IntToStr(CkEmail_getNumRelatedItems(email)));
// There should be 0 attachments.  
Memo1.Lines.Add('Num Attachments = ' + IntToStr(CkEmail_getNumAttachments(email)));

// Find the indices of the text/plain related part, and the text/html related part
i := 0;
numRelatedItems := CkEmail_getNumRelatedItems(email);
sbContentType := CkStringBuilder_Create();
while i < numRelatedItems do
  begin
    CkStringBuilder_Append(sbContentType,CkEmail__getRelatedContentType(email,i));
    Memo1.Lines.Add(IntToStr(i) + ': ' + CkStringBuilder__getAsString(sbContentType));
    if (CkStringBuilder_ContentsEqual(sbContentType,'text/plain',False)) then
      begin
        Memo1.Lines.Add('---- text/plain part:');
        Memo1.Lines.Add(CkEmail__getRelatedString(email,i,'utf-8'));
      end;

    CkStringBuilder_Clear(sbContentType);
    i := i + 1;
  end;

CkMime_Dispose(mime);
CkEmail_Dispose(email);
CkStringBuilder_Dispose(sbContentType);

end;