자유롭게 질의 및 응답을 할 수 있는 게시판입니다. 개발자 여러분의 답변이 큰 도움이 됩니다.
- 제품설치/등록 오류 문의: 설치/등록 Q&A 이용 (제품 구매 고객 한정)
Delphi idSMTP 메일 보낼때 라이브러리 문의
2018.04.20 14:21
본 게시판은 개발자들이 자유롭게 질문과 답변을 공유하는 게시판입니다.
* 따라서 최대한 정중하게 질문을 올려 주세요.
* 질문을 상세히 작성해 주실 수록 좋은 답변이 올라 옵니다.
* 다른 분들도 참고할 수 있도록 결과 댓글 필수(또는 감사 댓글)
(결과 댓글을 달지 않는 경우 다음 질문에 대한 답변이 달리지 않는 불이익이 있을 수 있습니다.)
-----------------------------------------------------------------------------------------------
안녕하세요! SMTP를 사용해서 메일을 보낼려고 합니다.
하지만 Delphi 10.2 Tokyo Enterprise에서는
uses절에서 IdSSLIOHandlerSocketOpenSSL 라이브러리를 추가해서 사용하고 싶은데 안되네요..
TIdSSLIOHandlerSocketOpenSSL.Create(nil); 을 구현하고 싶은데 안되서 문의드립니다.
혹시 SSL 부분을 다르게 처리하는게 있는지 문의드립니다.
*추신*
다른분 블로그에서 Delphi XE 버전에서 코딩한경우 SSL을 사용한거 같습니다.
<SMTP 사용 블로그>
http://delphisnippets.tistory.com/9
댓글 6
-
험프리
2018.04.20 15:28
-
네오
2018.04.23 18:14
빠른 답변 감사합니다. 제가 지금 코딩진행중인데.. 한군데가 막혀서 안되는거 같습니다.
IdSMTP.AuthenticationType := atLogin; // 로그인 방식
->AuthenticationType API가 존재하지 않습니다. 다른걸 사용해야될거 같은데요!
혹시 아시는거 있으시면 답변부탁드립니다.
*추신*
현재 자바 언어로 메일 보내기 코딩 구현하였으며 정상적으로 메일을 받고 있습니다.
그래서 자바와 델파이 코딩을 비교해서 하고 있는데요! 다른부분이 로그인 방식과 SSL 부분인거 같습니다.
<델파이>
SMTP.Host := 'smtp.gmail.com';
SMTP.Port := 465;
SMTP.Username := 'username';
SMTP.Password := 'password';
SMTP.AuthenticationType := atLogin; // 로그인 방식(이부분이 문제가 있는거 같습니다.)
<자바>
props.put("mail.smtp.host", "smtp.gmail.com");
props.put("mail.smtp.socketFactory.port", "465");
props.put("mail.smtp.socketFactory.class","javax.net.ssl.SSLSocketFactory");
props.put("mail.smtp.auth", "true");
props.put("mail.smtp.port", "465");
-
관리자
2018.04.24 13:55
SMTP.AuthenticationType := atLogin 코드는 인디 9 버전의 경우에 사용하던 코드입니다.
https://www.experts-exchange.com/questions/21943055/INdy-10-send-email.html
위의 링크에서 발췌한 발췌한 내용입니다.
인디 10의 경우도
인디 9.0과 마찬가지로 간단한 AUTH LOGIN을 사용할 수 있습니다. TIdSMTP.AuthType을 atDefault로 설정하십시오. 그런 다음 TIdSMTP에서 Username 및 Password 등록 정보를 설정하십시오.
이것은 이전 버전과의 호환성을 제공합니다. 대중에게 또는 대량으로 배포되는 많은 프로그램의 경우 인증에 Indy 10의 SASL 프레임 워크를 사용하여 프로그램이 다양한 SMTP 서버를 지원할 수 있도록하는 것이 좋습니다. 확장 된 SASL 프레임 워크는 TIdSMTP, TIdPOP3 및 TIdIMAP4를 지원합니다. 이 프레임 워크에는 CRAM (Challenge-Response Authentication Mechanism) MD5 SASL (RFC 2195), 익명 SASL (RFC 2245), 외부 SASL (RFC 2222), 로그인, 일회용 암호 OTP 용 SASL 메커니즘 컴포넌트가플러그인되어 있습니다. (RFC 2444), Plain SASL (2595) 및 S / Key (RFC 2222)가 있습니다. 또한 IddASASL (IdSASL에 있음)의 자손을 작성하여 고유 한 SASL 메커니즘 구성 요소를 작성할 수 있습니다. TIdSMTP가있는 프레임 워크에서 이를 사용하려면 다음을 수행하십시오.
1. 폼에 SASL 메커니즘 컴포넌트를 놓습니다. (Indy SASL 페이지)
2. TIdSMTP에서 AuthType 속성을 atSASL로 설정합니다.
3. TIdSMTP에서 SASLMechanisms 속성 옆에있는 버튼을 누릅니다. 편집기가 나타납니다.
4. 사용 가능한 목록 상자에서 TIdSMTP와 함께 사용할 SASL 메커니즘 컴포넌트를 선택합니다
5. 오른쪽 화살표를 클릭하여 할당 된 목록 상자로 이동하십시오.
6. 작업이 끝나면 확인을 클릭하십시오.
테스트 해보시고 결과를 알여주십시오.
-
네오
2018.04.24 15:38
"당신이먼저" 라는 닉네임이 올리신 SMTP 소스를 수정하였습니다.
이분의 소스로 윈도우에서 메일은 정상적으로 보냈다고 적혀있었습니다.
하지만 제 컴퓨터에서는 " SSL negotiation failed" 라는 메시지가 발생합니다.
SSL 부분 설정이 잘못된거 같은데요..어디가 잘못되었는지 모르겠습니다.
소스 전체 올렸습니다. 혹시 구글 계정 있으시면 테스트 한번 부탁드립니다.
-
험프리
2018.04.25 13:45
저는 위의 소스코드에 본문 링크의 SSL을 적용해 전송하니 연결(Connect) 성공 후 전송(Send) 시 아래와 같은 메시지를 받았습니다.
구글에서 보안이 낮은 앱이라서 로그인을 차단했다는 메일도 받았습니다.
전송은 되었으나, 구글의 보안정책 상 실패한 것으로 판단됩니다.
잠깐 시간내서 테스트 해봤습니다. 좀 자세한 내용은 직접 검색등을 통해서 해결해 보시기 바랍니다.
(구글 메일 보안 설정의 경우 델파이 자료 뿐아니라 다양한 자료를 살펴보셔야 할 수 있습니다.)
-
네오
2018.04.25 15:17
업무 바쁘신데요! 테스트해주셔서 감사합니다.
저는 위에 캡쳐해서 보내신 보안정책 실패 메시지도 받지 못하였습니다.
혹시 SSL 설정부분을 어떻게 코딩하셨는지 알수 있을까요?
Delphi idSMTP 메일 보낼때 라이브러리 문의
2018.04.20 14:21
본 게시판은 개발자들이 자유롭게 질문과 답변을 공유하는 게시판입니다.
* 따라서 최대한 정중하게 질문을 올려 주세요.
* 질문을 상세히 작성해 주실 수록 좋은 답변이 올라 옵니다.
* 다른 분들도 참고할 수 있도록 결과 댓글 필수(또는 감사 댓글)
(결과 댓글을 달지 않는 경우 다음 질문에 대한 답변이 달리지 않는 불이익이 있을 수 있습니다.)
-----------------------------------------------------------------------------------------------
안녕하세요! SMTP를 사용해서 메일을 보낼려고 합니다.
하지만 Delphi 10.2 Tokyo Enterprise에서는
uses절에서 IdSSLIOHandlerSocketOpenSSL 라이브러리를 추가해서 사용하고 싶은데 안되네요..
TIdSSLIOHandlerSocketOpenSSL.Create(nil); 을 구현하고 싶은데 안되서 문의드립니다.
혹시 SSL 부분을 다르게 처리하는게 있는지 문의드립니다.
*추신*
다른분 블로그에서 Delphi XE 버전에서 코딩한경우 SSL을 사용한거 같습니다.
<SMTP 사용 블로그>
http://delphisnippets.tistory.com/9
댓글 6
-
험프리
2018.04.20 15:28
-
네오
2018.04.23 18:14
빠른 답변 감사합니다. 제가 지금 코딩진행중인데.. 한군데가 막혀서 안되는거 같습니다.
IdSMTP.AuthenticationType := atLogin; // 로그인 방식
->AuthenticationType API가 존재하지 않습니다. 다른걸 사용해야될거 같은데요!
혹시 아시는거 있으시면 답변부탁드립니다.
*추신*
현재 자바 언어로 메일 보내기 코딩 구현하였으며 정상적으로 메일을 받고 있습니다.
그래서 자바와 델파이 코딩을 비교해서 하고 있는데요! 다른부분이 로그인 방식과 SSL 부분인거 같습니다.
<델파이>
SMTP.Host := 'smtp.gmail.com';
SMTP.Port := 465;
SMTP.Username := 'username';
SMTP.Password := 'password';
SMTP.AuthenticationType := atLogin; // 로그인 방식(이부분이 문제가 있는거 같습니다.)
<자바>
props.put("mail.smtp.host", "smtp.gmail.com");
props.put("mail.smtp.socketFactory.port", "465");
props.put("mail.smtp.socketFactory.class","javax.net.ssl.SSLSocketFactory");
props.put("mail.smtp.auth", "true");
props.put("mail.smtp.port", "465");
-
관리자
2018.04.24 13:55
SMTP.AuthenticationType := atLogin 코드는 인디 9 버전의 경우에 사용하던 코드입니다.
https://www.experts-exchange.com/questions/21943055/INdy-10-send-email.html
위의 링크에서 발췌한 발췌한 내용입니다.
인디 10의 경우도
인디 9.0과 마찬가지로 간단한 AUTH LOGIN을 사용할 수 있습니다. TIdSMTP.AuthType을 atDefault로 설정하십시오. 그런 다음 TIdSMTP에서 Username 및 Password 등록 정보를 설정하십시오.이것은 이전 버전과의 호환성을 제공합니다. 대중에게 또는 대량으로 배포되는 많은 프로그램의 경우 인증에 Indy 10의 SASL 프레임 워크를 사용하여 프로그램이 다양한 SMTP 서버를 지원할 수 있도록하는 것이 좋습니다. 확장 된 SASL 프레임 워크는 TIdSMTP, TIdPOP3 및 TIdIMAP4를 지원합니다. 이 프레임 워크에는 CRAM (Challenge-Response Authentication Mechanism) MD5 SASL (RFC 2195), 익명 SASL (RFC 2245), 외부 SASL (RFC 2222), 로그인, 일회용 암호 OTP 용 SASL 메커니즘 컴포넌트가플러그인되어 있습니다. (RFC 2444), Plain SASL (2595) 및 S / Key (RFC 2222)가 있습니다. 또한 IddASASL (IdSASL에 있음)의 자손을 작성하여 고유 한 SASL 메커니즘 구성 요소를 작성할 수 있습니다. TIdSMTP가있는 프레임 워크에서 이를 사용하려면 다음을 수행하십시오.
1. 폼에 SASL 메커니즘 컴포넌트를 놓습니다. (Indy SASL 페이지)
2. TIdSMTP에서 AuthType 속성을 atSASL로 설정합니다.
3. TIdSMTP에서 SASLMechanisms 속성 옆에있는 버튼을 누릅니다. 편집기가 나타납니다.
4. 사용 가능한 목록 상자에서 TIdSMTP와 함께 사용할 SASL 메커니즘 컴포넌트를 선택합니다
5. 오른쪽 화살표를 클릭하여 할당 된 목록 상자로 이동하십시오.
6. 작업이 끝나면 확인을 클릭하십시오.테스트 해보시고 결과를 알여주십시오.
-
네오
2018.04.24 15:38
"당신이먼저" 라는 닉네임이 올리신 SMTP 소스를 수정하였습니다.
이분의 소스로 윈도우에서 메일은 정상적으로 보냈다고 적혀있었습니다.
하지만 제 컴퓨터에서는 " SSL negotiation failed" 라는 메시지가 발생합니다.
SSL 부분 설정이 잘못된거 같은데요..어디가 잘못되었는지 모르겠습니다.
소스 전체 올렸습니다. 혹시 구글 계정 있으시면 테스트 한번 부탁드립니다.
-
험프리
2018.04.25 13:45
저는 위의 소스코드에 본문 링크의 SSL을 적용해 전송하니 연결(Connect) 성공 후 전송(Send) 시 아래와 같은 메시지를 받았습니다.
구글에서 보안이 낮은 앱이라서 로그인을 차단했다는 메일도 받았습니다.
전송은 되었으나, 구글의 보안정책 상 실패한 것으로 판단됩니다.
잠깐 시간내서 테스트 해봤습니다. 좀 자세한 내용은 직접 검색등을 통해서 해결해 보시기 바랍니다.
(구글 메일 보안 설정의 경우 델파이 자료 뿐아니라 다양한 자료를 살펴보셔야 할 수 있습니다.)
-
네오
2018.04.25 15:17
업무 바쁘신데요! 테스트해주셔서 감사합니다.
저는 위에 캡쳐해서 보내신 보안정책 실패 메시지도 받지 못하였습니다.
혹시 SSL 설정부분을 어떻게 코딩하셨는지 알수 있을까요?
TIdSMTP, TIdSSLIOHandlerSocketOpenSSL은 인디프로젝트에서 컴포넌트로 제공합니다.
해당 블로그를 참고해 컴포넌트 기반으로 구현하셔도 될것 같습니다.
해당 컴포넌트를 폼에 올리니 다음 유닛들이 추가됩니다.
IdBaseComponent, IdComponent,
IdIOHandler, IdIOHandlerSocket, IdIOHandlerStack, IdSSL, IdSSLOpenSSL,
IdTCPConnection, IdTCPClient, IdExplicitTLSClientServerBase, IdMessageClient,
IdSMTPBase, IdSMTP
(TIdSSLIOHandlerSocketOpenSSL 컴포넌트는 IdSSLOpenSSL에 선언되어 있네요. 참고하시기 바랍니다.)
——————
답글이 도움이 되셨는지 다른 분들도 참고할 수 있도록 결과 댓글 부탁드립니다.
(결과 댓글이 없는 경우 다른 질문에 대한 답변이 달리지 않는 불이익이 있을 수 있습니다.)