Q&A

  • [Delphi4] SMTP로 메일전송시 한글이 깨지는 경우..
메일전송시 한글이 깨져서 고민하고 있습니다.



앞에 게시했던 [5934]번 내용은 TNMSMTP 의 property 중에 CharSet 이라는 속성이

있다고 합니다.



그러나 제가 사용하는 Delphi4 에는 그런 속성이 없더군요.

아마도 버전5 부터 추가된 항목인듯 싶습니다.



그러면, 버전4 이하에서는 CharSet을 지정하는 방법이 없을까요?



만약 있다면 CharSet := 'euc-kr'로 지정하면 될 듯한데..



알고 계신분의 답장을 기다립니다.

2  COMMENTS
  • Profile
    HART 2000.05.09 18:26
    procedure TFMa_MailSend.NMSMTP1SendStart(Sender: TObject);

    begin

    NMSMTP1.FinalHeader[NMSMTP1.FinalHeader.Count-1] := 'Content-Type: text/html; charset=iso-2022-kr';

    memo1.Lines := NMSMTP1.FinalHeader;

    end;



    기본적으로 위 이벤트는 메일 발송 전에 메일 해더 부분을 수정할 수 있는 이벤트임



    위와 같이 한면 한글은 잘 전송됩니다. 단 첨부화일가 있는 경우 저도 어떤게 해야 하지 잘 몰라요, 그래서 저도 포기해는데.



    그리고 첨부화일 같이 발송하면 메일 해더가 변경되여서(더욱 복잡함) 어떤게 수정해야하지 저도 잘 못라서..



    끝으로 메일은 아무리 잘 보내도 받는 쪽에서 이상하게 해설하면 어쩔수 없는데...



    나도 고민 많이 해는데....



    혹시 방법을 찾으면 저에게도 답장을 보내주세요.. 메일 주소는 1004hart@hanmail.net



    그럼 수고...



    백승민 wrote:

    > 메일전송시 한글이 깨져서 고민하고 있습니다.

    >

    > 앞에 게시했던 [5934]번 내용은 TNMSMTP 의 property 중에 CharSet 이라는 속성이

    > 있다고 합니다.

    >

    > 그러나 제가 사용하는 Delphi4 에는 그런 속성이 없더군요.

    > 아마도 버전5 부터 추가된 항목인듯 싶습니다.

    >

    > 그러면, 버전4 이하에서는 CharSet을 지정하는 방법이 없을까요?

    >

    > 만약 있다면 CharSet := 'euc-kr'로 지정하면 될 듯한데..

    >

    > 알고 계신분의 답장을 기다립니다.

  • Profile
    백승민 2000.05.10 00:00
    제가 조사해본 바로는 Delphi4 에서 NMSMTP를 사용하는 경우, 첨부파일이 있는 메일의

    body 부분에 한글을 사용할 수 없다는 결론을 얻었습니다.



    일단, 첨부가 없는 경우에는 한글 지원이 잘 되므로 기존 부분을 다음과 같이

    수정하면 됩니다.



    if ListBox1.Items.count = 0 then

    NMSMTP1.FinalHeader[NMSMTP1.FinalHeader.Count-1] :=

    'Content-Type: text/plain; charset=euc-kr';



    첨부파일이 있는 경우에 한글지원이 안되는 이유는:

    header 부분이 다음과 같이 변경됩니다.

    Content-Type: multipart/mixed; boundary="..."



    기존 body 부분은 위의 header에서 정의한 boundary로 둘러싸인 영역으로 바뀝니다.

    (boundary) : 시작

    Content-Type: text/plain; charset=us-ascii

    *메일 본문*

    (boundary) : 첨부파일

    Content-Type: application/octet-stream; name="sample.txt"

    Content-Transfer-Encoding: base64

    Content-Disposition: attachment; filename="sample.txt"



    *encoding된 첨부파일*

    (boundary) : 끝



    여기에서 주목할 부분은 *메일 본문*이 있는 곳에 Content-Type이 자체적으로 지정되면서

    charset이 무조건 영문문자셋으로 바꾸기 때문입니다.



    Delphi4 에서는 수정할 방법이 없다고 생각되며, 다행히 version 5에서부터는 관련된

    property가 추가되었습니다.



    대신에 저는 www.delphi32.com 에서 "sakemail" 이라는 freeware component를 받아서

    사용하고 있습니다.



    HART wrote:

    > procedure TFMa_MailSend.NMSMTP1SendStart(Sender: TObject);

    > begin

    > NMSMTP1.FinalHeader[NMSMTP1.FinalHeader.Count-1] := 'Content-Type: text/html; charset=iso-2022-kr';

    > memo1.Lines := NMSMTP1.FinalHeader;

    > end;

    >

    > 기본적으로 위 이벤트는 메일 발송 전에 메일 해더 부분을 수정할 수 있는 이벤트임

    >

    > 위와 같이 한면 한글은 잘 전송됩니다. 단 첨부화일가 있는 경우 저도 어떤게 해야 하지 잘 몰라요, 그래서 저도 포기해는데.

    >

    > 그리고 첨부화일 같이 발송하면 메일 해더가 변경되여서(더욱 복잡함) 어떤게 수정해야하지 저도 잘 못라서..

    >

    > 끝으로 메일은 아무리 잘 보내도 받는 쪽에서 이상하게 해설하면 어쩔수 없는데...

    >

    > 나도 고민 많이 해는데....

    >

    > 혹시 방법을 찾으면 저에게도 답장을 보내주세요.. 메일 주소는 1004hart@hanmail.net

    >

    > 그럼 수고...

    >