Indy를 이용하여 메일 발송 프로그램을 만들어서 사용중이었습니다.
그런데, 특정 메일은 HTML 내용이 제대로 보이지 않고, 태그가 펼쳐져 보이는 것이었습니다.
원인을 분석해보니, SMTP서버로 메일을 보낼 때, TIdMessage에서 메일 헤더를 생성합니다. 그러나 이 부분에서 제목에 한글이 있는 경우 인코딩을 하는데, 제목이 긴 경우 특정 길이(75) 이하로 잘라서 헤더를 생성해주게끔 되어 있습니다.
문제는 헤더를 생성하는 부분에서 제목이 특정 길이(75) 이상인 경우 이미 올바로 헤더를 모두 만들어져 있는데, 그 값을 GenerateHeader에서 처리하는 부분에서 한번 더 불필요하게 처리를 하면서, 헤더 부분이 깨져서 메일 전체가 잘못되는 현상이 발생하게 됩니다.
이를 해결하기 위해서, 델파이7에 기본으로 설치되어 있는 Indy-9.0.10을 제거하고, 새로 Indy-9.0.18을 다운받아서 설치하고, TIdMessage 클래스에서 다음 부분을 직접 수정하여 인디 패키지를 재빌드하면, 제목이 특정 길이(75) 이상으로 긴경우 인코딩에 문제가 생겨서 메일이 깨지는 현상이 없어집니다.
// added 2001-Oct-29 Don Siders insures use of headers received but not used in properties if (FHeaders.Count > 0) then begin Result.Assign(FHeaders); Result.FoldLines := FHeaders.FoldLines; // 요 두라인을 추가했습니다. Result.FoldLength := FHeaders.FoldLength; // end;
728x90
반응형
'프로그래밍 > 델파이' 카테고리의 다른 글
성능비교(Round, Trunc, Floor, MulDiv, 정수연산) (0) | 2010.01.20 |
---|---|
AQTime을 이용한 프로파일링을 위한 델파이 7 프로젝트 옵션 설정 및 빌드 (0) | 2010.01.19 |
Format와 wvsprintf (4) | 2009.12.16 |
ForceDirectoriesOfIdFTP ; 디렉토리 강제 생성하기 (2) | 2009.12.02 |
델파이 IDE 환경정보를 그대로 활용하자. (0) | 2009.11.27 |