Q&A

  • indy SMTP를 쓰는데 메일이 깨집니다.
* 사용환경 : 델파이5 / Windows 2000



인디 컴포넌트를 이용해 설문조사 메일을 발송하는데, 메일 중간중간에..

이물질(! 혹은 음표) 등이 들어가 작동을 하지 않는 경우가 많습니다.

특히 메일서버에 따라 다른 증상을 보이는데요..

네이버의 경우 이상 없이 잘 나오지만, 드림위즈나 한메일 등은 똑같은 양상으로

깨져서 나오네요..



보낼때 특별한 인코딩 없이 8bit, text/html로 보냈습니다.



혹시 인코딩을 하면 괜찮을까 싶어 base64로 보냈더니, 모조리 깨진 글자가 나오네요..



제가 멀 잘 못했는지.. 소스는 아래와 같습니다.



function TFrmMain.SndMail(ToAddr, ToName, FromAddr, FName, Subj, MailBody : String) : boolean;

begin

with IdMsg do

begin



IdMsg.Clear;

From.Address := FromAddr;

From.Name := FName;

ReceiptRecipient.DisplayName := ToName;

Recipients.EMailAddresses := ToAddr;

Subject := Subj;

ContentType := 'TEXT/HTML';

CharSet := 'KS_C_5601-1987';



### base64로 보낼 경우

ContentTransferEncoding := 'base64';

Body.Add(IdBase64Encoder.CodeString(MailBody));



### 8bit로 보낼 경우

ContentTransferEncoding := '8bit';

body.add(mailbody);



IdSMTP.Send(IdMsg);





end

end



인코딩(base64, quoted-printable)에 대한 자료나 경험이 있으신 분은..

도와 주십시요..



이틀째 머리싸메구 작업하구 있는데 잘 안돼서 미치겠습니다.



부탁드립니다.

1  COMMENTS
  • Profile
    조영진 2001.09.22 06:38
    저도같은걸고민하다 다른분도움으로풀었습니다.

    idheadercoder.pas



    begin

    // Get the Charset part.

    if Pos('=?ISO', UpperCase(Header)) > 0 then

    ISO를빼세요

    그럼돼요

    cynic wrote:

    > * 사용환경 : 델파이5 / Windows 2000

    >

    > 인디 컴포넌트를 이용해 설문조사 메일을 발송하는데, 메일 중간중간에..

    > 이물질(! 혹은 음표) 등이 들어가 작동을 하지 않는 경우가 많습니다.

    > 특히 메일서버에 따라 다른 증상을 보이는데요..

    > 네이버의 경우 이상 없이 잘 나오지만, 드림위즈나 한메일 등은 똑같은 양상으로

    > 깨져서 나오네요..

    >

    > 보낼때 특별한 인코딩 없이 8bit, text/html로 보냈습니다.

    >

    > 혹시 인코딩을 하면 괜찮을까 싶어 base64로 보냈더니, 모조리 깨진 글자가 나오네요..

    >

    > 제가 멀 잘 못했는지.. 소스는 아래와 같습니다.

    >

    > function TFrmMain.SndMail(ToAddr, ToName, FromAddr, FName, Subj, MailBody : String) : boolean;

    > begin

    > with IdMsg do

    > begin

    >

    > IdMsg.Clear;

    > From.Address := FromAddr;

    > From.Name := FName;

    > ReceiptRecipient.DisplayName := ToName;

    > Recipients.EMailAddresses := ToAddr;

    > Subject := Subj;

    > ContentType := 'TEXT/HTML';

    > CharSet := 'KS_C_5601-1987';

    >

    > ### base64로 보낼 경우

    > ContentTransferEncoding := 'base64';

    > Body.Add(IdBase64Encoder.CodeString(MailBody));

    >

    > ### 8bit로 보낼 경우

    > ContentTransferEncoding := '8bit';

    > body.add(mailbody);

    >

    > IdSMTP.Send(IdMsg);

    >

    >

    > end

    > end

    >

    > 인코딩(base64, quoted-printable)에 대한 자료나 경험이 있으신 분은..

    > 도와 주십시요..

    >

    > 이틀째 머리싸메구 작업하구 있는데 잘 안돼서 미치겠습니다.

    >

    > 부탁드립니다.