JavaMail API-IMAP 서버

IMAP은 Internet Message Access Protocol. 전자 메일 클라이언트가 원격 메일 서버의 전자 메일에 액세스 할 수 있도록하는 응용 프로그램 계층 인터넷 프로토콜입니다. IMAP 서버는 일반적으로 잘 알려진 포트 143에서 수신합니다. IMAP (IMAPS)는 포트 번호 993에 할당됩니다.

IMAP는 온라인 및 오프라인 작동 모드를 모두 지원합니다. IMAP을 사용하는 전자 메일 클라이언트는 일반적으로 사용자가 명시 적으로 삭제할 때까지 서버에 메시지를 남겨 둡니다.

꾸러미 com.sun.mail.imapIMAP 메시지 저장소에 대한 액세스를 제공하는 JavaMail API 용 IMAP 프로토콜 공급자입니다. 아래 표에는이 공급자의 인터페이스와 클래스가 나열되어 있습니다.

클래스 / 인터페이스 기술
IMAPFolder.ProtocolCommand 이것은 사용자 정의 IMAP 프로토콜 명령을위한 간단한 인터페이스 입니다.
ACL 이것은 수업입니다. 특정 인증 식별자 (사용자 또는 그룹)에 대한 액세스 제어 목록 항목입니다.
IMAPFolder 이 클래스는 IMAP 폴더를 구현합니다.
IMAPFolder.FetchProfileItem 이것은 헤더를 가져 오는 클래스입니다.
IMAPMessage 이 클래스는 ReadableMime 객체를 구현합니다.
IMAPMessage.FetchProfileCondition 이 클래스는 폴더의 각 메시지에 대해 수행 할 테스트를 구현합니다.
IMAPSSLStore 이 클래스는 SSL을 통해 IMAP 메시지 저장소에 대한 액세스를 제공합니다.
IMAPStore 이 클래스는 IMAP 메시지 저장소에 대한 액세스를 제공합니다.
진상 이 클래스는 인증 식별자 (예 : 사용자 또는 그룹)에 대한 권한 집합을 나타냅니다.
권리. 권리 이 내부 클래스는 개인의 권리를 나타냅니다.
SortTerm RFC 5256에 정의 된 특정 정렬 기준.

이 공급자 위에 주목해야 할 몇 가지 사항 :

  • 이 공급자는 IMAP4 및 IMAP4rev1 프로토콜을 모두 지원합니다.

  • 연결된 IMAPStore는 IMAP 서버와 통신하는 데 사용하기 위해 IMAP 프로토콜 개체 풀을 유지합니다. 폴더가 열리고 새 IMAP 프로토콜 개체가 필요하면 IMAPStore가 연결 풀에서 폴더를 제공하거나 사용할 수없는 경우 생성합니다. 폴더가 닫히면 해당 IMAP 프로토콜 개체가 연결 풀에 반환됩니다.

  • 연결된 IMAPStore 개체는 저장소에 IMAP 서버에 대한 전용 연결을 제공하는 별도의 IMAP 프로토콜 개체를 유지하거나 유지하지 않을 수 있습니다.

IMAP 프로토콜 공급자는 JavaMail 세션 개체에 설정할 수있는 다음 속성을 지원합니다. 속성은 항상 문자열로 설정됩니다. 그만큼Type 열은 문자열이 해석되는 방법을 설명합니다.

이름 유형 기술
mail.imap.user IMAP의 기본 사용자 이름입니다.
mail.imap.host 연결할 IMAP 서버입니다.
mail.imap.port int connect () 메서드가 명시 적으로 지정하지 않은 경우 연결할 IMAP 서버 포트입니다. 기본값은 143입니다.
mail.imap.partialfetch 부울 IMAP 부분 페치 기능을 사용해야하는지 여부를 제어합니다. 기본값은 true입니다.
mail.imap.fetchsize int 부분 페치 크기 (바이트)입니다. 기본값은 16K입니다.
mail.imap.ignorebodystructuresize 부울 IMAP BODYSTRUCTURE 응답에는 각 본문 부분의 정확한 크기가 포함됩니다. 일반적으로이 크기는 각 신체 부위에 대해 가져올 데이터의 양을 결정하는 데 사용됩니다. 기본값은 false입니다.
mail.imap.connectiontimeout int 소켓 연결 제한 시간 값 (밀리 초). 기본값은 무한 시간 제한입니다.
mail.imap.timeout int 소켓 I / O 제한 시간 값 (밀리 초). 기본값은 무한 시간 제한입니다.
mail.imap.statuscachetimeout int STATUS 명령 응답 캐시의 제한 시간 값 (밀리 초)입니다. 기본값은 1000 (1 초)입니다. 0은 캐시를 비활성화합니다.
mail.imap.appendbuffersize int IMAP 폴더에 추가 할 때 메모리에 버퍼링 할 메시지의 최대 크기입니다.
mail.imap.connectionpoolsize int 연결 풀에서 사용 가능한 최대 연결 수입니다. 기본값은 1입니다.
mail.imap.connectionpooltimeout int 연결 풀 연결에 대한 제한 시간 값 (밀리 초). 기본값은 45000 (45 초)입니다.
mail.imap.separatestoreconnection 부울 저장 명령에 전용 저장 연결을 사용할지 여부를 나타내는 플래그입니다. 기본값은 거짓입니다.
mail.imap.auth.login.disable 부울 true이면 일반 LOGIN 명령을 사용하는 대신 비표준 AUTHENTICATE LOGIN 명령을 사용하지 않습니다. 기본값은 거짓입니다.
mail.imap.auth.plain.disable 부울 true 인 경우 AUTHENTICATE PLAIN 명령을 사용하지 않습니다. 기본값은 거짓입니다.
mail.imap.auth.ntlm.disable 부울 true 인 경우 AUTHENTICATE NTLM 명령을 사용하지 않습니다. 기본값은 거짓입니다.
mail.imap.proxyauth.user 서버가 PROXYAUTH 확장을 지원하는 경우이 속성은 역할을 수행 할 사용자의 이름을 지정합니다. 관리자의 자격 증명을 사용하여 서버에 인증합니다. 인증 후 IMAP 공급자는이 속성에 지정된 사용자 이름으로 PROXYAUTH 명령을 실행합니다.
mail.imap.localaddress IMAP 소켓을 만들 때 바인딩 할 로컬 주소 (호스트 이름)입니다. 기본값은 Socket 클래스에서 선택한 주소입니다.
mail.imap.localport int IMAP 소켓을 만들 때 바인딩 할 로컬 포트 ​​번호입니다. 기본값은 Socket 클래스에서 선택한 포트 번호입니다.
mail.imap.sasl.enable 부울 true로 설정되면 javax.security.sasl 패키지를 사용하여 로그인 인증 메커니즘을 선택하십시오. 기본값은 false입니다.
mail.imap.sasl.mechanisms 사용할 SASL 메커니즘 이름의 공백 또는 쉼표로 구분 된 목록입니다.
mail.imap.sasl.authorizationid SASL 인증에 사용할 권한 부여 ID입니다. 설정하지 않으면 인증 ID (사용자 이름)가 사용됩니다.
mail.imap.sasl.realm 영역이 필요한 SASL 인증 메커니즘 (예 : DIGEST-MD5)과 함께 사용할 영역입니다.
mail.imap.auth.ntlm.domain NTLM 인증 도메인.
mail.imap.auth.ntlm.flags int NTLM 프로토콜 별 플래그.
mail.imap.socketFactory 소켓 공장 javax.net.SocketFactory 인터페이스를 구현하는 클래스로 설정되면이 클래스는 IMAP 소켓을 만드는 데 사용됩니다.
mail.imap.socketFactory.class 설정된 경우 javax.net.SocketFactory 인터페이스를 구현하는 클래스의 이름을 지정합니다. 이 클래스는 IMAP 소켓을 만드는 데 사용됩니다.
mail.imap.socketFactory.fallback 부울 true로 설정하면 지정된 소켓 팩토리 클래스를 사용하여 소켓을 생성하지 못하면 java.net.Socket 클래스를 사용하여 소켓이 생성됩니다. 기본값은 true입니다.
mail.imap.socketFactory.port int 지정된 소켓 팩토리를 사용할 때 연결할 포트를 지정합니다. 설정되지 않은 경우 기본 포트가 사용됩니다.
mail.imap.ssl.enable 부울 true로 설정하면 SSL을 사용하여 연결하고 기본적으로 SSL 포트를 사용합니다. 기본값은 "imap"프로토콜의 경우 false이고 "imaps"프로토콜의 경우 true입니다.
mail.imap.ssl.checkserveridentity 부울 true로 설정된 경우 RFC 2595에 지정된대로 서버 ID를 확인합니다. 기본값은 false입니다.
mail.imap.ssl.trust 설정되고 소켓 팩토리가 지정되지 않은 경우 MailSSLSocketFactory를 사용할 수 있습니다.
"*"로 설정하면 모든 호스트가 신뢰됩니다.
공백으로 구분 된 호스트 목록으로 설정하면 해당 호스트가 신뢰됩니다.
그렇지 않으면 신뢰는 서버가 제공하는 인증서에 따라 달라집니다.
mail.imap.ssl.socketFactory SSL 소켓 팩토리 javax.net.ssl.SSLSocketFactory 클래스를 확장하는 클래스로 설정되면이 클래스는 IMAP SSL 소켓을 작성하는 데 사용됩니다.
mail.imap.ssl.socketFactory.class 설정된 경우 javax.net.ssl.SSLSocketFactory 클래스를 확장하는 클래스의 이름을 지정합니다. 이 클래스는 IMAP SSL 소켓을 만드는 데 사용됩니다.
mail.imap.ssl.socketFactory.port int 지정된 소켓 팩토리를 사용할 때 연결할 포트를 지정합니다. 설정하지 않으면 기본 포트가 사용됩니다.
mail.imap.ssl.protocols SSL 연결에 사용할 SSL 프로토콜을 지정합니다. 속성 값은 javax.net.ssl.SSLSocket.setEnabledProtocols 메서드에 허용되는 공백으로 구분 된 토큰 목록입니다.
mail.imap.starttls.enable 부울 true 인 경우 STARTTLS 명령 (서버에서 지원되는 경우)을 사용하여 로그인 명령을 실행하기 전에 TLS 보호 연결로 연결을 전환 할 수 있습니다. 기본값은 거짓입니다.
mail.imap.starttls.required 부울 true이면 STARTTLS 명령을 사용해야합니다. 서버가 STARTTLS 명령을 지원하지 않거나 명령이 실패하면 연결 방법이 실패합니다. 기본값은 false입니다.
mail.imap.socks.host 메일 서버 연결에 사용될 SOCKS5 프록시 서버의 호스트 이름을 지정합니다.
mail.imap.socks.port SOCKS5 프록시 서버의 포트 번호를 지정합니다. 프록시 서버가 표준 포트 번호 1080을 사용하지 않는 경우에만 사용해야합니다.
mail.imap.minidletime int 이 속성은 밀리 초 단위로 지연을 설정합니다. 설정되지 않은 경우 기본값은 10 밀리 초입니다.
mail.imap.enableimapevents 부울 특별한 IMAP 관련 이벤트가 Store의 ConnectionListener에 전달되도록합니다. true이면 Store의 유휴 메서드 중에 수신 된 요청하지 않은 응답이 IMAPStore.RESPONSE 유형의 ConnectionEvents로 전송됩니다. 이벤트의 메시지는 원시 IMAP 응답 문자열이됩니다. 기본적으로 이러한 이벤트는 전송되지 않습니다.
mail.imap.folder.class com.sun.mail.imap.IMAPFolder 하위 클래스의 클래스 이름입니다. 하위 클래스는 추가 IMAP 명령에 대한 지원을 제공하는 데 사용할 수 있습니다. 하위 클래스에는 public MyIMAPFolder (String fullName, char separator, IMAPStore store, Boolean isNamespace) 및 public MyIMAPFolder (ListInfo li, IMAPStore store) 형식의 공용 생성자가 있어야합니다.

일반적으로 응용 프로그램은이 패키지의 클래스를 직접 사용할 필요가 없습니다. 대신 javax.mail 패키지 (및 하위 패키지)에 정의 된 API를 사용해야합니다. 응용 프로그램은 IMAPStore 또는 IMAPFolder 인스턴스를 직접 구성해서는 안됩니다. 대신 Session 메소드 getStore를 사용하여 적절한 Store 객체를 획득하고 그로부터 Folder 객체를 획득해야합니다.

IMAP 서버 사용 예는 Quota Management 장에서 설명 합니다.