Як правильніше обробляти повідомлення пошти - довідник по delphi

Вітання всім!
Порадьте, пліз, хто нитка робив програми обробки пошти на компоненті indy. Як правильніше обробляти повідомлення у мене складності наступного плану. Є такий код

Начебто все нормально працює поки справа не доходить до аттачей! То просто прога ламається з помилкою TextCount повинен бути> 1, то пересилає лист АЛЕ, оутлук відображає замість тексту листа This is a multi-part message in MIME format. Але при цьому, якщо подивитися повністю текст з усіма заголовками, то там є оригінал листа. але не правильно (як я розумію) обробляється мультіпарти. Коротше чекаю рад і пропозицій. Може хто порадить інші компоненти, тільки пліз або з прикладами. або де взяти можна.

Все дуже просто.
Потрібно тільки трохи знати сам стандарт MIME. У ньому є така властивість як Content-Type, яке в інтернет документах зустрічається суцільно і всюди, в тому числі і в електронних листах. Найчастіше воно буває трьох типів.
1. text / plain - звичайний текст без форматування і вкладень.
2. text / html - текст з форматуванням html, але теж без вкладень.
3. multipart / mixed - складне лист складається з багатьох частин.
У перших двох випадках тіло повідомлення заноситься в idMessage.Body. А з третім все несклолько складніше. Повідомлення складається з декількох частин і одна з них (перша за рахунком) це текст. Причому у кожній з частин теж має зазначатися Content-Type. Ці частини знаходяться в idMessage.MessageParts і можуть бути двох видів: TidText і TidAttachmentFile Ось так це має виглядати:

Але це стосується тільки листів з аттачем. При прийомі листів всі ці частини в т.ч. і текст буде в idMessage.MessageParts. Кількість краще дізнаватися просто Countом а TextCount краще не використовувати. До речі у прийнятого листи Content-Type можна дізнатися з однойменного властивості, таким-же чином можо дізнатися і кодіроку листи (ЯКІ, WIN, UTF).