JavaMail API-폴더 관리

지금까지 우리는 주로 INBOX 폴더를 사용하여 이전 장에서 작업했습니다. 대부분의 메일이있는 기본 폴더입니다. 일부 시스템은이를 INBOX라고 부르고 다른 시스템은 다른 이름으로 부르기도합니다. 그러나 INBOX라는 이름을 사용하여 JavaMail API에서 언제든지 액세스 할 수 있습니다.

JavaMail API는 폴더를 추상 Folder 클래스의 인스턴스로 나타냅니다.

public abstract class Folder extends Object

이 클래스는 서버에서 명명 된 폴더를 요청하고, 폴더에서 메시지를 삭제하고, 폴더에서 특정 메시지를 검색하고, 폴더에 메시지를 나열하는 등의 방법을 선언합니다.

폴더 열기

Folder 클래스 의 유일한 생성자 가 protected 이므로 직접 폴더를 만들 수 없습니다 . 다음에서 폴더 를 가져올 수 있습니다 .

  • 세션

  • 가게

  • 또는 다른 폴더

위의 모든 클래스에는 유사한 서명이있는 유사한 getFolder () 메서드가 있습니다.

public abstract Folder getFolder(String name) throws MessagingException

폴더 개체 를 가져 오는 데 도움이되는 몇 가지 방법 은 다음과 같습니다.

방법 기술
부울 존재 () 폴더가 실제로 존재하는지 확인합니다. Folder 개체를 가져 오기 전에이 방법을 사용하십시오.
추상 무효 열기 (int 모드) Folder를 받으면 닫힙니다. 이 방법을 사용하여 엽니 다. mode 는 Folder.READ_ONLY 또는 Folder.READ_WRITE 일 수 있습니다.
추상 부울 isOpen () 이 메서드는 폴더가 열려 있으면 true를 반환하고 닫혀 있으면 false를 반환합니다.
추상 무효 닫기 (부울 정리) 폴더를 닫습니다. 경우 영구 삭제의 인수가 사실 폴더에서 삭제 된 메시지는 서버의 실제 파일에서 삭제됩니다. 그렇지 않으면 단순히 삭제 된 것으로 표시 되지만 메시지는 여전히 삭제 취소 할 수 있습니다.

기본 폴더 정보

다음은 폴더에 대한 기본 정보를 반환하는 Folder 클래스의 몇 가지 메서드입니다.

방법 기술
추상 문자열 getName () "TutorialsPoint Mail"과 같은 폴더 이름을 반환합니다.
추상 문자열 getFullName () "books / Manisha / TutorialsPoint Mail"과 같은 루트에서 전체 계층 이름을 반환합니다.
URLName getURLName () 이 폴더를 나타내는 URLName을 반환합니다.
추상 폴더 getParent () 이 폴더를 포함하는 폴더의 이름, 즉 상위 폴더를 반환합니다. 예 : 이전 "TutorialsPoint Mail"예제의 "Manisha".
추상 int getType () 폴더에 메시지 및 / 또는 다른 폴더가 포함될 수 있는지 여부를 나타내는 int를 반환합니다.
int getMode () 모드를 알 수없는 경우 두 개의 명명 된 상수 Folder.READ_ONLY 또는 Folder.READ_WRITE 또는 -1 중 하나를 반환합니다.
getStore () 저장 이 폴더를 검색 한 저장소 개체를 반환합니다.
추상 문자 getSeparator () 이 폴더의 경로 이름을 직계 하위 폴더의 이름과 구분하는 구분 문자를 반환합니다.

폴더 관리

다음은 폴더 관리에 도움이되는 몇 가지 방법입니다.

방법 기술
추상 부울 생성 (int 유형) 이 폴더의 Store에 새 폴더가 생성됩니다. 어디 유형은 다음과 같습니다 Folder.HOLDS_MESSAGES 또는 Folder.HOLDS_FOLDERS. 폴더가 성공적으로 생성되면 true를 반환하고 그렇지 않으면 false를 반환합니다 .
추상 부울 삭제 (부울 재귀) 이렇게하면 폴더가 닫힌 경우에만 폴더가 삭제됩니다. 그렇지 않으면 IllegalStateException이 발생합니다 . 경우 같이 Recurse가 있다 사실 , 다음 하위 폴더가 삭제됩니다.
추상 부울 renameTo (폴더 f) 이 폴더의 이름이 변경됩니다. 이름을 바꾸려면 폴더를 닫아야합니다. 그렇지 않으면 IllegalStateException이 발생합니다.

폴더에서 메시지 관리

다음은 폴더에서 메시지를 관리하는 데 도움이되는 몇 가지 방법입니다.

방법 기술
abstract void appendMessages (Message [] 메시지) 이름에서 알 수 있듯이 배열의 메시지는이 폴더의 끝에 배치됩니다.
void copyMessages (Message [] 메시지, 폴더 대상) 이 폴더의 메시지를 인수로 지정된 폴더로 복사합니다.
추상 메시지 [] 영구 삭제 () 폴더에서 메시지를 삭제하려면 Flags.Flag.DELETED 플래그를 true로 설정하십시오. 폴더에서 삭제 된 메시지를 물리적으로 제거하려면이 메서드를 호출해야합니다.

폴더 내용 나열

폴더에 포함 된 폴더를 나열하는 방법에는 네 가지가 있습니다.

방법 기술
폴더 [] 목록 () 이 폴더에 포함 된 폴더를 나열하는 배열을 반환합니다.
폴더 [] 목록 구독 됨 () 이 폴더에 포함 된 모든 구독 폴더를 나열하는 배열이 반환됩니다.
추상 폴더 [] 목록 (문자열 패턴) 이것은 패턴을 지정할 수 있다는 점을 제외 하면 list () 메소드 와 유사합니다 . 패턴은 일치하는 폴더의 이름을 제공하는 문자열입니다.
폴더 [] listSubscribed (문자열 패턴) 이것은 패턴을 지정할 수 있다는 점을 제외 하면 listSubscribed () 메소드 와 유사합니다 . 패턴은 일치하는 폴더의 이름을 제공하는 문자열입니다.

메일 확인

방법 기술
추상 int getMessageCount () 이 메서드는 열려 있거나 닫힌 폴더에서 호출 할 수 있습니다. 그러나 닫힌 폴더의 경우이 메서드는 정확한 메시지 수를 쉽게 사용할 수 없음을 나타 내기 위해 -1을 반환하거나 반환하지 않을 수 있습니다.
추상 부울 hasNewMessages () 마지막으로 열린 이후 새 메시지가 폴더에 추가 된 경우 true를 반환 합니다 .
int getNewMessageCount () RECENT 플래그가 설정된 폴더의 메시지를 확인하여 새 메시지 수를 반환합니다.
int getUnreadMessageCount () 열린 폴더 또는 닫힌 폴더에서 호출 할 수 있습니다. 그러나 닫힌 폴더의 경우 -1을 반환하여 실제 답변이 너무 비싸다는 것을 나타낼 수 있습니다.

폴더에서 메시지 받기

Folder 클래스는 열린 폴더에서 메시지를 검색하는 네 가지 방법을 제공합니다.

방법 기술
추상 메시지 getMessage (int messageNumber) 폴더의 n 번째 메시지를 반환합니다. 폴더의 첫 번째 메시지는 1 번입니다.
메시지 [] getMessages () 이 폴더의 모든 메시지를 나타내는 Message 개체 의 배열을 반환 합니다.
Message [] getMessages (int start, int end) 이것은 폴더에서 시작으로 시작하고 끝으로 끝나는 메시지 개체 의 배열을 반환 합니다.
Message [] getMessages (int [] messageNumbers) 이는 messageNumbers 배열 에서 숫자로 특별히 식별 된 메시지 만 포함하는 배열을 반환합니다 .
무효 가져 오기 (Message [] 메시지, FetchProfile fp) 주어진 메시지에 대해 FetchProfile에 지정된 항목을 프리 페치합니다. FetchProfile 인수는 프리 페치 할 메시지의 헤더를 지정합니다.

폴더 검색

서버가 검색을 지원하는 경우 (많은 IMAP 서버는 지원하고 대부분의 POP 서버는 지원하지 않음) 특정 기준을 충족하는 메시지를 폴더에서 쉽게 검색 할 수 있습니다. 기준은 SearchTerm 개체로 인코딩됩니다. 다음은 두 가지 검색 방법입니다.

방법 기술
메시지 [] 검색 ( 검색어 용어) 이 폴더에서 지정된 검색 기준과 일치하는 메시지를 검색합니다. 일치하는 메시지를 포함하는 배열을 반환합니다. 일치하는 항목이 없으면 빈 배열을 반환합니다.
메시지 [] 검색 (검색어, 메시지 [] 메시지) 지정된 검색 기준과 일치하는 메시지에 대해 지정된 메시지 배열을 검색합니다. 일치하는 메시지를 포함하는 배열을 반환합니다. 일치하는 항목이 없으면 빈 배열을 반환합니다. 지정된 메시지 개체는이 폴더에 속해야합니다.

플래그

플래그 수정은 폴더의 전체 메시지 집합에 대한 플래그를 변경해야 할 때 유용합니다. 다음은 Folder 클래스에서 제공되는 메서드입니다.

방법 기술
void setFlags (Message [] 메시지, 플래그 플래그, 부울 값) 배열에 지정된 메시지에 지정된 플래그를 설정합니다.
void setFlags (int start, int end, Flags 플래그, 부울 값) 시작부터 끝까지 번호가 매겨진 메시지에 지정된 플래그를 설정합니다 (시작 및 끝 포함).
void setFlags (int [] messageNumbers, 플래그 플래그, 부울 값) 메시지 번호가 배열에있는 메시지에 지정된 플래그를 설정합니다.
추상 플래그 getPermanentFlags () 이 폴더가 모든 메시지에 대해 지원하는 플래그를 반환합니다.