2013-01-18 1 views
1

Я пытаюсь извлечь читаемую часть свойства Body.Text объекта TIDMessagePart, который является типом TIDText. Что-то вроде кода ниже. Однако, если ContentType части сообщения TIDText не является текстовым/обычным, но скорее является text/html, это заполняет sBody всеми тегами HTML. Я просто хочу прочитать текст, но не вижу способа получить это в библиотеке версии 9. Я что-то упускаю?Indy v9 in Delphi 7 - как извлечь читаемую текстовую часть TIDMessagePart.Body, когда ContentType не является текстовым/простым

var email: TIDMessage; sBody: String;

...

for j := 0 to Pred(email.MessageParts.Count) do 
begin 
if email.MessageParts.Items[j] is TIdText then 
begin 
    sBody := TIdText(email.MessageParts.Items[j]).Body.Text; 
end; 
end; 

ответ

2

Вы должны вручную разобрать HTML, чтобы извлечь простой текст, который вы хотите от него. TIdMessage - это просто почтовый контейнер данных, он не анализирует содержимое тела для вас, кроме как обрабатывать конверсии кодировок. Вы должны сами разбирать контент.

+0

Это остается верным для INDY 10, и я ожидаю, что он останется прежним для будущих версий INDY. – jachguate

+1

Правда, в Indy нет планов по внедрению полного парсера HTML (для этого доступно множество сторонних парсеров), однако Indy 10 имеет небольшой парсер HTML в функции ParseMetaHTTPEquiv() '' IdGlobalProtocols 'unit, который' TIdHTTP' использует для разбора '' тегов из данных HTML. –

 Смежные вопросы

  • Нет связанных вопросов^_^