아이폰의 전용 메일 클라이언트에서는 일반적인 메일을 보낼 때 제목/보낸 사람이 깨지는 경우가 있다.
기본적으로 아이폰 메일 클라이언트는 UTF8 만 인식하기 때문인데 EUC-KR로도 깨지지 않는 메일을 발송할 수가 있다.
델파이와 IdSMTP, IdMessage 를 이용하여 깨짐없는 메일을 발송해 보자
이때 발송자 정보와 제목은 base64 로 인코딩해서 보내자.
보낸사람이 : 홍길동 <hong@naver.com> 이런식으로 뒤에 메일주소까지 같이 있을 경우에
"홍길동"만 인코딩을 하고 <hong@naver.com>은 그대로 써줘야 정상으로 가며 만일 전체를 인코딩 했을 때는
수신에서 발송자가 발신자 미확인으로 뜨니 주의 해야 한다.
메시지 헤더를 다음과 같이 작성한다.
기본적으로 아이폰 메일 클라이언트는 UTF8 만 인식하기 때문인데 EUC-KR로도 깨지지 않는 메일을 발송할 수가 있다.
델파이와 IdSMTP, IdMessage 를 이용하여 깨짐없는 메일을 발송해 보자
이때 발송자 정보와 제목은 base64 로 인코딩해서 보내자.
보낸사람이 : 홍길동 <hong@naver.com> 이런식으로 뒤에 메일주소까지 같이 있을 경우에
"홍길동"만 인코딩을 하고 <hong@naver.com>은 그대로 써줘야 정상으로 가며 만일 전체를 인코딩 했을 때는
수신에서 발송자가 발신자 미확인으로 뜨니 주의 해야 한다.
메시지 헤더를 다음과 같이 작성한다.
//base64로 인코딩된 정보를 얻는다. function TSendMailThread.GetEucKRString(AStr: string): string; begin result := '=?euc-kr?B?' + Base64EncodeStr(AStr) + '?='; end; ... with FIdMessage do begin Headers.Clear; Headers.Add('MIME-Version: 1.0'); if Pos('<', From.Text) > 0 then tmp := '<' + sm.Mid('<', '>', From.Text) + '>' else tmp := ''; // 발신자의 홍길동과아웃룩을 이용한 사내메일(QMail), 네이버, 구글 메일등 정상으로 잘 수신된다. 아이폰에서도 물론 깨짐없이 잘 보인다. 참고로 메일 발송서버에 대한 인증을 해야만 특정 메일서버(특히 관공서내)에서 필터링 되지 않고 잘 수신하는데 SPF(Sender Policy Framework) 문서를 잘 읽고 메일 서버에 반영해 놓도록 하자...부분을 나눈다 // 발신자의 "홍길동"만 base64로 인코딩 한다. Headers.Add('From: ' + GetEucKRString(sm.before('<', From.Text)) + tmp); Headers.Add('Subject: '+GetEucKRString(Subject)); Headers.Add('Content-Type: '+ContentType+'; charset="euc-kr"'); Headers.Add('Content-Transfer-Encoding: 8bit'); Headers.Add('X-Mailer: SendMail'); end; FIdSMTP.Send(FIdMessage);
'프로그래밍 > Delphi' 카테고리의 다른 글
TPrinter를 이용한 이미지 인쇄 (3) | 2011.03.16 |
---|---|
파일사이즈 알아내기 - in Delphi (0) | 2011.03.02 |
설정된 프린터 용지 얻기 및 설정하기 (1) | 2011.01.30 |
virtual 과 dynamic 그리고 override 의 내부 메카니즘 소개 (2) | 2010.08.04 |
DLL을 이용한 마우스 전역 후킹(Hooking) (1) | 2010.07.16 |