2013-01-18 5 views
1

TIDText 유형의 TIDMessagePart 객체의 Body.Text 속성에서 읽을 수있는 부분을 추출하려고합니다. 아래 코드와 같은 것입니다. 그러나 TIDText 메시지 부분의 ContentType이 text/plain이 아니고 text/html 인 경우 sBody를 모든 HTML 태그로 채 웁니다. 방금 읽을 수있는 텍스트를 원하지만 버전 9 라이브러리에서 해당 텍스트를 가져 오는 방법을 찾지 못합니다. 내가 놓친 게 있니?Delphi 7의 Indy v9 - ContentType이 text/plain이 아닌 경우 TIDMessagePart.Body의 읽을 수있는 텍스트 부분을 추출하는 방법

var 이메일 : 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은 IdGlobalProtocols의 ParseMetaHTTPEquiv() 함수에 작은 HTML 파서를 가지고있다. '유닛, TIdHTTP는 HTML 데이터에서''태그를 파싱하는데 사용한다. –