API JavaMail - Gerenciamento de pasta

Até agora, trabalhamos em nossos capítulos anteriores principalmente com a pasta INBOX. Esta é a pasta padrão na qual reside a maioria dos e-mails. Alguns sistemas podem chamá-lo como INBOX e alguns outros podem chamá-lo por algum outro nome. Mas, você sempre pode acessá-lo da API JavaMail usando o nome INBOX.

A API JavaMail representa pastas como instâncias da classe abstrata Folder:

public abstract class Folder extends Object

Essa classe declara métodos para solicitar pastas nomeadas de servidores, excluir mensagens de pastas, pesquisar mensagens específicas em pastas, listar as mensagens em uma pasta e assim por diante.

Abrindo uma pasta

Não podemos criar uma pasta diretamente, pois o único construtor na classe Folder é protegido . Podemos obter uma pasta de:

  • uma sessão

  • uma loja

  • ou outra pasta

Todas as classes acima têm um método getFolder () semelhante com assinatura semelhante:

public abstract Folder getFolder(String name) throws MessagingException

Alguns dos métodos que ajudam a obter o objeto Folder são:

Método Descrição
booleano existe () Verifica se a pasta realmente existe. Use este método antes de obter o objeto Folder.
abstract void open (modo int) Quando você obtém uma pasta , ela é fechada. Use este método para abri-lo. modo pode ser Folder.READ_ONLY ou Folder.READ_WRITE.
isOpen booleano abstrato () Este método retorna verdadeiro se a pasta estiver aberta, falso se estiver fechada
abstract void close (expunge booleano) Fecha a pasta. Se o argumento expunge for verdadeiro , todas as mensagens excluídas na pasta serão excluídas do arquivo real no servidor. Caso contrário, eles são simplesmente marcados como excluídos , mas as mensagens ainda podem ser recuperadas.

Informações básicas da pasta

A seguir estão alguns dos métodos na classe Folder que retornam informações básicas sobre uma pasta:

Método Descrição
String abstrata getName () Retorna o nome da pasta, como "TutorialsPoint Mail"
Abstract String getFullName () Retorna o nome hierárquico completo da raiz, como “books / Manisha / TutorialsPoint Mail”.
URLName getURLName () Retorne um URLName representando esta pasta.
abstract Folder getParent () Retorna o nome da pasta que contém esta pasta, ou seja, a pasta pai. Por exemplo, "Manisha" do exemplo anterior "TutorialsPoint Mail".
abstract int getType () Retorna um int indicando se a pasta pode conter mensagens e / ou outras pastas.
int getMode () Ele retorna uma das duas constantes nomeadas Folder.READ_ONLY ou Folder.READ_WRITE ou -1 quando o modo é desconhecido.
Store getStore () Retorna o objeto Store do qual esta pasta foi recuperada.
abstract char getSeparator () Retorne o caractere delimitador que separa o nome do caminho desta pasta dos nomes das subpastas imediatas.

Gerenciando pasta

A seguir estão alguns dos métodos que ajudam a gerenciar a pasta:

Método Descrição
criação booleana abstrata (tipo int) Isso cria uma nova pasta na Loja desta pasta. Onde o tipo seria: Folder.HOLDS_MESSAGES ou Folder.HOLDS_FOLDERS. Retorna verdadeiro se a pasta for criada com sucesso, caso contrário, retorna falso .
exclusão booleana abstrata (recurse boolean) Isso exclui a pasta apenas se ela estiver fechada. Caso contrário, ele lança uma IllegalStateException . Se recurse for true , as subpastas serão excluídas.
renameTo booleano abstrato (pasta f) Isso muda o nome desta pasta. Uma pasta deve ser fechada para ser renomeada. Caso contrário, uma IllegalStateException é lançada.

Gerenciando mensagens em pastas

A seguir estão alguns dos métodos que ajudam a gerenciar as mensagens na pasta:

Método Descrição
abstract void appendMessages (Message [] messages) Como o nome indica, as mensagens na matriz são colocadas no final desta pasta.
void copyMessages (Message [] messages, Folder destination) Isso copia as mensagens desta pasta para uma pasta especificada fornecida como argumento.
Abstract Message [] expunge () Para excluir uma mensagem de uma pasta, defina seu sinalizador Flags.Flag.DELETED como verdadeiro. Para remover fisicamente mensagens excluídas de uma pasta, você deve chamar este método.

Listando o conteúdo de uma pasta

Existem quatro métodos para listar as pastas que uma pasta contém:

Método Descrição
Pasta [] a lista () Isso retorna uma matriz listando as pastas que esta pasta contém.
Pasta [] listSubscribed () Isso retorna uma matriz que lista todas as pastas assinadas que esta pasta contém.
Lista abstrata de pastas [] (padrão de string) Isso é semelhante ao método list () , exceto que permite que você especifique um padrão. O padrão é uma string que fornece o nome das pastas correspondentes.
Folder [] listSubscribed (padrão de string) Isso é semelhante ao método listSubscribed () , exceto que permite que você especifique um padrão. O padrão é uma string que fornece o nome das pastas correspondentes.

Verificando se há correio

Método Descrição
abstract int getMessageCount () Este método pode ser chamado em uma pasta aberta ou fechada. No entanto, no caso de uma pasta fechada, este método pode (ou não) retornar -1 para indicar que o número exato de mensagens não está facilmente disponível.
abstract boolean hasNewMessages () Isso retorna verdadeiro se novas mensagens foram adicionadas à pasta desde que foi aberta pela última vez.
int getNewMessageCount () Ele retorna a nova contagem de mensagens verificando as mensagens na pasta cujo sinalizador RECENTE está definido.
int getUnreadMessageCount () Isso pode ser invocado em uma pasta aberta ou fechada. No entanto, no caso de uma pasta fechada, pode retornar -1 para indicar que a resposta real seria muito cara de se obter.

Recebendo mensagens de pastas

A classe Folder fornece quatro métodos para recuperar mensagens de pastas abertas:

Método Descrição
Abstract Message getMessage (int messageNumber) Isso retorna a enésima mensagem na pasta. A primeira mensagem da pasta é a número 1.
Message [] getMessages () Isso retorna uma matriz de objetos Message representando todas as mensagens nesta pasta.
Message [] getMessages (int start, int end) Isso retorna uma matriz de objetos Message da pasta, começando com start e terminando com end, inclusive.
Message [] getMessages (int [] messageNumbers) Isso retorna uma matriz contendo apenas as mensagens especificamente identificadas por número na matriz messageNumbers .
void fetch (Message [] messages, FetchProfile fp) Faça a pré-busca dos itens especificados no FetchProfile para as mensagens fornecidas. O argumento FetchProfile especifica quais cabeçalhos nas mensagens devem ser pré-buscados.

Pesquisando Pastas

Se o servidor oferecer suporte à pesquisa (como muitos servidores IMAP e a maioria dos servidores POP não), será fácil pesquisar em uma pasta as mensagens que atendem a certos critérios. Os critérios são codificados em objetos SearchTerm. A seguir estão os dois métodos de pesquisa:

Método Descrição
Pesquisa de mensagem [] (termo SearchTerm) Pesquise esta pasta por mensagens que correspondam ao critério de pesquisa especificado. Retorna uma matriz contendo as mensagens correspondentes. Retorna uma matriz vazia se nenhuma correspondência for encontrada.
Pesquisa de mensagem [] (termo SearchTerm, mensagens de mensagem []) Pesquise a matriz de mensagens fornecida para aquelas que correspondem ao critério de pesquisa especificado. Retorna uma matriz contendo as mensagens correspondentes. Retorna uma matriz vazia se nenhuma correspondência for encontrada. Os objetos Message especificados devem pertencer a esta pasta.

Bandeiras

A modificação de sinalizadores é útil quando você precisa alterar os sinalizadores de todo o conjunto de mensagens em uma pasta. A seguir estão os métodos fornecidos na classe Folder:

Método Descrição
void setFlags (Message [] messages, Flags flag, boolean value) Define os sinalizadores especificados nas mensagens especificadas na matriz.
void setFlags (int start, int end, sinalizadores sinalizadores, valor booleano) Define os sinalizadores especificados nas mensagens numeradas do início ao fim, inclusive início e fim.
void setFlags (int [] messageNumbers, sinalizador sinalizador, valor booleano) Define os sinalizadores especificados nas mensagens cujos números de mensagem estão na matriz.
Abstract Flags getPermanentFlags () Retorna os sinalizadores que esta pasta suporta para todas as mensagens.