API JavaMail - Gestión de carpetas

Hasta ahora, hemos trabajado en nuestros capítulos anteriores principalmente con la carpeta INBOX. Esta es la carpeta predeterminada en la que reside la mayor parte del correo. Algunos sistemas pueden llamarlo como INBOX y otros pueden llamarlo por algún otro nombre. Pero siempre puede acceder a él desde la API de JavaMail utilizando el nombre INBOX.

La API de JavaMail representa carpetas como instancias de la clase Carpeta abstracta:

public abstract class Folder extends Object

Esta clase declara métodos para solicitar carpetas con nombre de los servidores, eliminar mensajes de carpetas, buscar mensajes particulares en carpetas, enumerar los mensajes en una carpeta, etc.

Abrir una carpeta

No podemos crear una carpeta directamente ya que el único constructor de la clase Carpeta está protegido . Podemos obtener una carpeta de:

  • una sesión

  • una tienda

  • u otra carpeta

Todas las clases anteriores tienen un método getFolder () similar con una firma similar:

public abstract Folder getFolder(String name) throws MessagingException

Algunos de los métodos que ayudan a obtener el objeto Carpeta son:

Método Descripción
booleano existe () Comprueba si la carpeta realmente existe. Utilice este método antes de obtener el objeto Carpeta.
vacío abstracto abierto (modo int) Cuando obtienes una carpeta , se cierra. Utilice este método para abrirlo. el modo puede ser Folder.READ_ONLY o Folder.READ_WRITE.
isOpen () booleano abstracto Este método devuelve verdadero si la carpeta está abierta, falso si está cerrada
cierre vacío abstracto (borrado booleano) Cierra la carpeta. Si el argumento de eliminación es verdadero , los mensajes eliminados en la carpeta se eliminan del archivo real en el servidor. De lo contrario, simplemente se marcan como eliminados , pero los mensajes aún se pueden recuperar.

Información básica de la carpeta

A continuación se muestran algunos de los métodos de la clase Carpeta que devuelven información básica sobre una carpeta:

Método Descripción
resumen String getName () Devuelve el nombre de la carpeta, como "TutorialsPoint Mail"
resumen String getFullName () Devuelve el nombre jerárquico completo de la raíz, como "libros / Manisha / TutorialsPoint Mail".
URLName getURLName () Devuelve un URLName que represente esta carpeta.
Carpeta abstracta getParent () Devuelve el nombre de la carpeta que contiene esta carpeta, es decir, la carpeta principal. Por ejemplo, "Manisha" del ejemplo anterior "TutorialsPoint Mail".
resumen int getType () Devuelve un int que indica si la carpeta puede contener mensajes y / u otras carpetas.
int getMode () Devuelve una de las dos constantes con nombre Folder.READ_ONLY o Folder.READ_WRITE o -1 cuando se desconoce el modo.
Almacenar getStore () Devuelve el objeto Store del que se recuperó esta carpeta.
resumen char getSeparator () Devuelve el carácter delimitador que separa el nombre de ruta de esta carpeta de los nombres de las subcarpetas inmediatas.

Administrar carpeta

Los siguientes son algunos de los métodos que ayudan a administrar la carpeta:

Método Descripción
creación booleana abstracta (tipo int) Esto crea una nueva carpeta en la Tienda de esta carpeta. Donde el tipo sería: Folder.HOLDS_MESSAGES o Folder.HOLDS_FOLDERS. Devuelve verdadero si la carpeta se creó con éxito; de lo contrario, devuelve falso .
eliminación booleana abstracta (recursivo booleano) Esto elimina la carpeta solo si la carpeta está cerrada. De lo contrario, arroja una IllegalStateException . Si recurse es verdadero , se eliminan las subcarpetas.
booleano abstracto renombrar a (carpeta f) Esto cambia el nombre de esta carpeta. Se debe cerrar una carpeta para que se le cambie el nombre. De lo contrario, se lanza una IllegalStateException.

Administrar mensajes en carpetas

Los siguientes son algunos de los métodos que ayudan a administrar los mensajes en la carpeta:

Método Descripción
abstract void appendMessages (Mensaje [] mensajes) Como su nombre lo indica, los mensajes de la matriz se colocan al final de esta carpeta.
void copyMessages (Mensaje [] mensajes, destino de carpeta) Esto copia los mensajes de esta carpeta en una carpeta específica dada como argumento.
Mensaje abstracto [] eliminar () Para eliminar un mensaje de una carpeta, establezca su indicador Flags.Flag.DELETED en verdadero. Para eliminar físicamente los mensajes eliminados de una carpeta, debe llamar a este método.

Listado del contenido de una carpeta

Hay cuatro métodos para enumerar las carpetas que contiene una carpeta:

Método Descripción
Lista de carpetas [] () Esto devuelve una matriz que enumera las carpetas que contiene esta carpeta.
Lista de carpetas [] Suscrito () Esto devuelve una matriz que enumera todas las carpetas suscritas que contiene esta carpeta.
Lista de carpetas abstractas [] (patrón de cadena) Es similar al método list () excepto que le permite especificar un patrón. El patrón es una cadena que da el nombre de las carpetas que coinciden.
Lista de carpetas [] Suscrito (patrón de cadena) Es similar al método listSubscriptions () excepto que le permite especificar un patrón. El patrón es una cadena que da el nombre de las carpetas que coinciden.

Comprobación de correo

Método Descripción
resumen int getMessageCount () Este método se puede invocar en una carpeta abierta o cerrada. Sin embargo, en el caso de una carpeta cerrada, este método puede (o no) devolver -1 para indicar que la cantidad exacta de mensajes no está disponible fácilmente.
hasNewMessages booleano abstracto () Esto devuelve verdadero si se han agregado nuevos mensajes a la carpeta desde que se abrió por última vez.
int getNewMessageCount () Devuelve el recuento de mensajes nuevos comprobando los mensajes en la carpeta cuyo indicador RECIENTE está establecido.
int getUnreadMessageCount () Esto se puede invocar en una carpeta abierta o cerrada. Sin embargo, en el caso de una carpeta cerrada, puede devolver -1 para indicar que la respuesta real sería demasiado cara de obtener.

Obtener mensajes de carpetas

La clase Folder proporciona cuatro métodos para recuperar mensajes de carpetas abiertas:

Método Descripción
mensaje abstracto getMessage (int messageNumber) Esto devuelve el enésimo mensaje de la carpeta. El primer mensaje de la carpeta es el número 1.
Mensaje [] getMessages () Esto devuelve una matriz de objetos de mensaje que representan todos los mensajes de esta carpeta.
Mensaje [] getMessages (int start, int end) Esto devuelve una matriz de objetos de Mensaje de la carpeta, comenzando con el inicio y terminando con el final, inclusive.
Mensaje [] getMessages (int [] messageNumbers) Esto devuelve una matriz que contiene solo aquellos mensajes identificados específicamente por número en la matriz messageNumbers .
recuperación vacía (Mensaje [] mensajes, FetchProfile fp) Busque previamente los elementos especificados en FetchProfile para los mensajes dados. El argumento FetchProfile especifica qué encabezados de los mensajes se van a buscar previamente.

Carpetas de búsqueda

Si el servidor admite la búsqueda (como lo hacen muchos servidores IMAP y la mayoría de los servidores POP no), es fácil buscar en una carpeta los mensajes que cumplan ciertos criterios. Los criterios están codificados en objetos SearchTerm. Los siguientes son los dos métodos de búsqueda:

Método Descripción
Búsqueda de mensajes [] (término de término de búsqueda ) Busque en esta carpeta los mensajes que coincidan con el criterio de búsqueda especificado. Devuelve una matriz que contiene los mensajes coincidentes. Devuelve una matriz vacía si no se encontraron coincidencias.
Búsqueda de mensaje [] (término de término de búsqueda , mensajes de mensaje []) Busque en la matriz dada de mensajes aquellos que coincidan con el criterio de búsqueda especificado. Devuelve una matriz que contiene los mensajes coincidentes. Devuelve una matriz vacía si no se encontraron coincidencias. Los objetos de mensaje especificados deben pertenecer a esta carpeta.

Banderas

La modificación de banderas es útil cuando necesita cambiar las banderas para todo el conjunto de mensajes en una carpeta. A continuación se muestran los métodos proporcionados en la clase Carpeta:

Método Descripción
void setFlags (mensajes Message [], bandera Flags, valor booleano) Establece las banderas especificadas en los mensajes especificados en la matriz.
void setFlags (inicio int, fin int, bandera Flags, valor booleano) Establece las banderas especificadas en los mensajes numerados de principio a fin, ambos de principio a fin inclusive.
void setFlags (int [] messageNumbers, Flags flag, valor booleano) Establece las banderas especificadas en los mensajes cuyos números de mensaje están en la matriz.
banderas abstractas getPermanentFlags () Devuelve las banderas que esta carpeta admite para todos los mensajes.