2017-11-17 19 views
0

IMAP4를 사용하여 메일 서버를 구축해야합니다. 연결될 때 메일을 클라이언트에 "푸시 (push)"해야합니다. IMAP IDLE을 지원하지 않는 Delphi XE6 및 Indy 10.6.0.5122를 사용합니다. 인디 구성 요소에 "푸시 (push)"방법을 사용할 수 있습니까? 그렇지 않다면 새 메일이 존재하는지 주기적으로 묻는 서버를 "푸시 (push)"로 대체 할 수 있습니까? 아니면 나쁜 생각입니까? 도움이되는 모든 답변에 감사드립니다.Delphi - 푸시 방식으로 Indy 구성 요소를 확장하십시오.

+0

안녕하세요. https://stackoverflow.com/help/how-to-ask를 참조하십시오. – Rob

답변

5

귀하가 말한 것처럼 Indy does not currently support IDLE이지만 추가 작업을 통해 수동으로 구현할 수 있어야합니다. 클라이언트 측에

, 다음 차례까지 인바운드 데이터를 읽을 타이머/스레드를 시작, ( TIdIMAP4.SendCmd()이 상황에서 작동 할 경우 잘 모르겠습니다)의 응답을 읽으려는 IDLE 명령을 보낼 TIdIMAP4.IOHandler.WriteLn()를 호출 IOHandler.ReadLn IDLE 꺼짐

서버 측에

TIdIMAP4Server.CommandHandlers 컬렉션 IDLE에 대한 항목을 추가하고에 OnCommand 핸들러를 할당 답장을 보내, 필요한 경우 클라이언트가와 (IDLE를 꺼질 때까지 당신은 클라이언트 소켓에 항목을 밀어 수 있습니다 DONE 명령을 사용하거나 소켓을 닫음).

코드 예제가 없습니다. IDLE의 작동 방식에 대한 자세한 내용은 RFC 2177을 참조하십시오.

+0

고맙습니다. 제 작품에서 양자 점프입니다. TIdIMAP4Server 구성 요소를 사용하는 기능적 서버의 몇 가지 코드 예가 ​​있습니까? –

+0

@ WojciechPawłowski 아니요, 아니요 –

+0

좋아, 질문이 하나 더 있습니다. emailarchitect에서 만든 "EAGetMail POP3/IMAP4 구성 요소"에 대한 경험이 있습니까? 그렇다면 더 나은 옵션은 무엇입니까? - 인디를 확장하거나 비 자유 구성 요소를 사용합니까? –