[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 호출 기능으로 사용하셔도 큰 문제 없이 서비스 할 수가 있습니다.

반응형

이 글을 공유하기

댓글