아주 오래된 글이지만, 혹시 다른 분들에게 도움이 될까 싶어서..... 답 글을 합니다.
아래 코드를 보시고, 참고하세요.
IdSMTP1->Host = stHost ;
IdSMTP1->Port = StrToInt(stPort) ;
IdSMTP1->Username = stUser ;
IdSMTP1->Password = stPswd ;
IdMessage1->Clear() ;
IdMessage1->ClearHeader() ;
IdMessage1->ClearBody() ;
IdMessage1->MessageParts->Clear() ;
IdMessage1->Body->Clear() ;
IdMessage1->CharSet = "UTF-8"; // <================== UTF-8
IdMessage1->From->Address = stUser ;
IdMessage1->Recipients->EMailAddresses = stEmail ;
if (stCcEmail.Length()>5) {
MainForm->IdMessage1->CCList->EMailAddresses = stCcEmail ;
};
if (stBccEmail.Length()>5) {
IdMessage1->BccList->EMailAddresses = stBccEmail ;
};
IdMessage1->Subject = stSubject ;
IdMessage1->Body->Add( stMsg ) ;
if (stlFiles->Count > 0) {
IdMessage1->ContentType = "multipart/mixed";
TIdMessageBuilderPlain *myMessage = new TIdMessageBuilderPlain(); //#include <IdMessageBuilder.hpp> add attachment file
for (int i = 0; i < stlFiles->Count ; i++) {
myMessage->Attachments->Add( stlFiles->Strings[i] );
} ;
myMessage->PlainTextCharSet = "UTF-8"; // <================== UTF-8
myMessage->PlainText->Text = stMsg ;
myMessage->FillMessage(IdMessage1) ;
delete myMessage ;
} ;
Application->ProcessMessages();
try {
if (!IdSMTP1->Connected()) IdSMTP1->Connect() ;
IdSMTP1->Authenticate();
IdSMTP1->Send(IdMessage1);
} catch (...) {
IdSMTP1->Disconnect();
return false ;
} ;
IdSMTP1->Disconnect();
김상욱 님이 쓰신 글 :
: 안녕하세요 고수님들
: 저는 인디컴포넌트를 사용하여 메일보내는 프로그램을
: 만들고 있읍니다.
: 근데 중국어나 일본어와 같은 다국어지원을 위해서 한참고민
: 하고 있읍니다.
:
: TidMessage의 CharSet=UTF-8
: ContentTransferEncoding=base64
: ContentType=text/plain
:
: SMTP서버는 gmail을 쓰고 있고요
: 근데 자꾸만 받는쪽에서 글자가 깨지거나 ? 표시가 나옵니다.
:
: 많은고수님들의 지도 부탁드립니다
: 좋은하루 되세요
|