[Delphi ] idSMTP eMail 발송 기능

반응형
반응형

델파이에서 idSMTP 이용하여 eMail Send 기능.

기존 Delphi7에서 Indy component 포함되어, idSMTP 이용해서 메일 보낼 수 있도록 했지만, SSL을 사용 하기 때문에  현재는 XE10에서  idSMTP 사용하여, 메일 보낼 수있는 방법 알려드리겠습니다.

메일 발송 기능

저가 사용한 컴포넌트 -> IdSMTP, IdSSLIOHandlerSocketOpenSSL, IdMessage 입니다. 

소스내용
function SendMail(peMailAddr,pSubject, pText : WideString) : WideString;
var
SMTP: TIdSMTP;
SSL: TIdSSLIOHandlerSocketOpenSSL;
MM: TIdMessage;
begin
//peMailAddr -> 받는 사람 eMail 주소( 예시 aaaa@rushmac.net, bbbb@rushmac.net)
//pSubject -> 메일 제목
//pText -> 메일 본문 내용 글
result := '';
SMTP := TIdSMTP.Create(nil);
SSL := TIdSSLIOHandlerSocketOpenSSL.Create(nil);
MM := TIdMessage.Create(nil);
try
//발송할 서버 정보
SMTP.Host := 'SMTP 서버명 주소';
SMTP.Port := SMTP 포트번호;
SMTP.Username := eMail 주소;
SMTP.Password := 발송할 eMail 패스워드;
SMTP.IOHandler := SSL;
SMTP.UseTLS := utUseExplicitTLS;
SSL.Host := SMTP.Host;
SSL.Port := SMTP.Port;
// setup mail message
MM.From.Address := 발송할 eMail주소;
MM.Recipients.EMailAddresses := peMailAddr;
MM.ContentTransferEncoding := 'base64';
MM.Subject := pSubject;
with TIdText.Create(MM.MessageParts, MM.Body) do
begin
CharSet := 'utf-8';
// Body.Text := pText;
Body.Add(pText);
end;
// send mail
try
try
SMTP.Connect;
SMTP.Send(MM);
result := '0';
except
end;
finally
if SMTP.Connected then
SMTP.Disconnect;
end;
finally
SMTP.Free;
SSL.Free;
MM.Free;
end;
end;

 

마무리

현재  델파이(XE10.3)에서는 아무런 문제 없이 서비스 하고 있지만, 델파이7에서는 SSL 인증 때문에  메일 SEND할 수가 없지만,  XE버전에서 idSMTP  eMail 발송 대해 DLL로 작업해서 DLL 호출 기능으로 사용하셔도 큰 문제 없이 서비스 할 수가 있습니다.

반응형

댓글