iCount: Integer; s, s_addr, firstLine: string; sL: TStringList; begin // пытаемся подключиться к существующей копии Outlook-а // Если не получится - сообщим, что Outlook не запущен, и все... myOutlookApp := TOutlookApplication.Create(nil); myOutlookApp.ConnectKind := ckRunningInstance;
// Хм... Все-таки, запущен. Проходим по всем выбранным письмам // (их может быть больше одного), и собираем необходимые данные. // Для того, чтобы получить адрес - пойдем на хитрость: создадим // письмо - ответ (Reply), Outlook в список получателей занесет того, // от кого письмо пришло, считаем это значение, и... не будем ничего // отправлять...
for iCount := 1 to myOutlookApp.ActiveExplorer.Selection.Count do begin mailItem := myOutlookApp.ActiveExplorer.Selection.Item(iCount) as _MailItem;
objReply := mailItem.Reply; objRecips := objReply.Recipients; s_addr := ''; for i := 1 to objRecips.Count do begin s_addr := s_addr + objRecips.Item(i).Address; end;
// Конечно, выделить первую строку из mailItem.Body можно и по-другому, // но мы ж не ищем легких путей... sL := TStringList.Create; try sL.DelimitedText := StringReplace(mailItem.Body, ' ', '&prob;', [rfReplaceAll]); firstLine := StringReplace(sL.Strings[0], '&prob;', ' ', [rfReplaceAll]); finally sL.Free; end;
// Все, закончили. Чтоб не было утечки памяти, отключаемся и удаляем объект // (не волнуйся, та копия MS Outlook, что была запущена, продолжает работать) myOutlookApp.Disconnect; myOutlookApp.Free; end;