API JavaMail - Servidores IMAP
IMAP es el acrónimo de Internet Message Access Protocol. Es un protocolo de Internet de capa de aplicación que permite a un cliente de correo electrónico acceder al correo electrónico en un servidor de correo remoto. Un servidor IMAP normalmente escucha en el conocido puerto 143. IMAP sobre SSL (IMAPS) se asigna al puerto número 993.
IMAP admite modos de funcionamiento en línea y fuera de línea. Los clientes de correo electrónico que utilizan IMAP generalmente dejan mensajes en el servidor hasta que el usuario los elimina explícitamente.
Paquete com.sun.mail.imapes un proveedor de protocolo IMAP para la API de JavaMail que proporciona acceso a un almacén de mensajes IMAP. La siguiente tabla enumera la interfaz y las clases de este proveedor:
Clase / Interfaz | Descripción |
---|---|
IMAPFolder.ProtocolCommand | Esta es una interfaz simple para comandos de protocolo IMAP definidos por el usuario. |
ACL | Esta es una clase. Una entrada de la lista de control de acceso para un identificador de autenticación particular (usuario o grupo). |
IMAPFolder | Esta clase implementa una carpeta IMAP. |
IMAPFolder.FetchProfileItem | Esta es una clase para buscar encabezados. |
IMAPMessage | Esta clase implementa un objeto ReadableMime. |
IMAPMessage.FetchProfileCondition | Esta clase implementa la prueba a realizar en cada mensaje de la carpeta. |
IMAPSSLStore | Esta clase proporciona acceso a un almacén de mensajes IMAP a través de SSL. |
IMAPStore | Esta clase proporciona acceso a un almacén de mensajes IMAP. |
Derechos | Esta clase representa el conjunto de derechos para un identificador de autenticación (por ejemplo, un usuario o un grupo). |
Derechos Derecho | Esta clase interna representa un derecho individual. |
SortTerm | Un criterio de clasificación particular, según lo definido por RFC 5256. |
Algunos puntos a tener en cuenta por encima de este proveedor:
Este proveedor admite los protocolos IMAP4 e IMAP4rev1.
Un IMAPStore conectado mantiene un grupo de objetos de protocolo IMAP para usar en la comunicación con el servidor IMAP. A medida que se abren carpetas y se necesitan nuevos objetos de protocolo IMAP, IMAPStore los proporcionará desde el grupo de conexiones o los creará si no hay ninguno disponible. Cuando se cierra una carpeta, su objeto de protocolo IMAP se devuelve al grupo de conexiones si el grupo.
El objeto IMAPStore conectado puede mantener o no un objeto de protocolo IMAP separado que proporciona a la tienda una conexión dedicada al servidor IMAP.
El proveedor de protocolo IMAP admite las siguientes propiedades, que pueden establecerse en el objeto Sesión JavaMail. Las propiedades siempre se establecen como cadenas; laType La columna describe cómo se interpreta la cadena.
Nombre | Tipo | Descripción |
---|---|---|
mail.imap.user | Cuerda | Nombre de usuario predeterminado para IMAP. |
mail.imap.host | Cuerda | El servidor IMAP al que conectarse. |
mail.imap.port | En t | El puerto del servidor IMAP al que conectarse, si el método connect () no especifica uno explícitamente. El valor predeterminado es 143. |
mail.imap.partialfetch | booleano | Controla si se debe utilizar la capacidad de recuperación parcial de IMAP. Por defecto es verdadero. |
mail.imap.fetchsize | En t | Tamaño de recuperación parcial en bytes. El valor predeterminado es 16K. |
mail.imap.ignorebodystructuresize | booleano | La respuesta IMAP BODYSTRUCTURE incluye el tamaño exacto de cada parte del cuerpo. Normalmente, este tamaño se utiliza para determinar la cantidad de datos que se deben obtener para cada parte del cuerpo. El valor predeterminado es falso. |
mail.imap.connectiontimeout | En t | Valor de tiempo de espera de conexión de socket en milisegundos. El valor predeterminado es el tiempo de espera infinito. |
mail.imap.timeout | En t | Valor de tiempo de espera de E / S del socket en milisegundos. El valor predeterminado es el tiempo de espera infinito. |
mail.imap.statuscachetimeout | En t | Valor de tiempo de espera en milisegundos para la caché de la respuesta al comando STATUS. El valor predeterminado es 1000 (1 segundo). Zero desactiva la caché. |
mail.imap.appendbuffersize | En t | Tamaño máximo de un mensaje para almacenar en la memoria intermedia cuando se agrega a una carpeta IMAP. |
mail.imap.connectionpoolsize | En t | Número máximo de conexiones disponibles en el grupo de conexiones. El valor predeterminado es 1. |
mail.imap.connectionpooltimeout | En t | Valor de tiempo de espera en milisegundos para las conexiones del grupo de conexiones. El valor predeterminado es 45000 (45 segundos). |
mail.imap.separatestoreconnection | booleano | Marca para indicar si se debe utilizar una conexión de tienda dedicada para los comandos de tienda. El valor predeterminado es falso. |
mail.imap.auth.login.disable | booleano | Si es verdadero, evita el uso del comando AUTHENTICATE LOGIN no estándar, en lugar de usar el comando LOGIN simple. El valor predeterminado es falso. |
mail.imap.auth.plain.disable | booleano | Si es verdadero, evita el uso del comando AUTHENTICATE PLAIN. El valor predeterminado es falso. |
mail.imap.auth.ntlm.disable | booleano | Si es verdadero, evita el uso del comando AUTHENTICATE NTLM. El valor predeterminado es falso. |
mail.imap.proxyauth.user | Cuerda | Si el servidor admite la extensión PROXYAUTH, esta propiedad especifica el nombre del usuario como el que actuará. Autentíquese en el servidor con las credenciales del administrador. Después de la autenticación, el proveedor de IMAP emitirá el comando PROXYAUTH con el nombre de usuario especificado en esta propiedad. |
mail.imap.localaddress | Cuerda | Dirección local (nombre de host) a la que enlazar al crear el socket IMAP. Por defecto, la dirección elegida por la clase Socket. |
mail.imap.localport | En t | Número de puerto local al que enlazar al crear el socket IMAP. De forma predeterminada, el número de puerto elegido por la clase Socket. |
mail.imap.sasl.enable | booleano | Si se establece en verdadero, intente utilizar el paquete javax.security.sasl para elegir un mecanismo de autenticación para iniciar sesión. El valor predeterminado es falso. |
mail.imap.sasl.mechanisms | Cuerda | Una lista separada por espacios o comas de nombres de mecanismos SASL para intentar usar. |
mail.imap.sasl.authorizationid | Cuerda | El ID de autorización que se utilizará en la autenticación SASL. Si no se configura, se utiliza el ID de autenticación (nombre de usuario). |
mail.imap.sasl.realm | Cuerda | El reino para usar con los mecanismos de autenticación SASL que requieren un reino, como DIGEST-MD5. |
mail.imap.auth.ntlm.domain | Cuerda | El dominio de autenticación NTLM. |
mail.imap.auth.ntlm.flags | En t | Indicadores específicos del protocolo NTLM. |
mail.imap.socketFactory | Fábrica de enchufes | Si se establece en una clase que implementa la interfaz javax.net.SocketFactory, esta clase se utilizará para crear sockets IMAP. |
mail.imap.socketFactory.class | Cuerda | Si se establece, especifica el nombre de una clase que implementa la interfaz javax.net.SocketFactory. Esta clase se utilizará para crear sockets IMAP. |
mail.imap.socketFactory.fallback | booleano | Si se establece en true, si no se crea un socket usando la clase de fábrica de socket especificada, el socket se creará usando la clase java.net.Socket. Por defecto es verdadero. |
mail.imap.socketFactory.port | En t | Especifica el puerto al que conectarse cuando se utiliza la fábrica de conectores especificada. El puerto predeterminado se usa cuando no está configurado. |
mail.imap.ssl.enable | booleano | Si se establece en verdadero, use SSL para conectarse y use el puerto SSL de forma predeterminada. El valor predeterminado es falso para el protocolo "imap" y verdadero para el protocolo "imaps". |
mail.imap.ssl.checkserveridentity | booleano | Si se establece en verdadero, verifique la identidad del servidor según lo especificado por RFC 2595. El valor predeterminado es falso. |
mail.imap.ssl.trust | Cuerda | Si se establece y no se ha especificado una fábrica de sockets, habilita el uso de MailSSLSocketFactory. Si se establece en "*", todos los hosts son de confianza. Si se establece en una lista de hosts separados por espacios en blanco, esos hosts son de confianza. De lo contrario, la confianza depende del certificado que presente el servidor. |
mail.imap.ssl.socketFactory | Fábrica de sockets SSL | Si se establece en una clase que amplía la clase javax.net.ssl.SSLSocketFactory, esta clase se utilizará para crear sockets SSL IMAP. |
mail.imap.ssl.socketFactory.class | Cuerda | Si se establece, especifica el nombre de una clase que amplía la clase javax.net.ssl.SSLSocketFactory. Esta clase se utilizará para crear sockets SSL IMAP. |
mail.imap.ssl.socketFactory.port | En t | Especifica el puerto al que conectarse cuando se utiliza la fábrica de conectores especificada. Si no se configura, se utilizará el puerto predeterminado. |
mail.imap.ssl.protocols | cuerda | Especifica los protocolos SSL que se habilitarán para las conexiones SSL. El valor de la propiedad es una lista separada por espacios en blanco de tokens aceptables para el método javax.net.ssl.SSLSocket.setEnabledProtocols. |
mail.imap.starttls.enable | booleano | Si es verdadero, habilita el uso del comando STARTTLS (si lo admite el servidor) para cambiar la conexión a una conexión protegida por TLS antes de emitir cualquier comando de inicio de sesión. El valor predeterminado es falso. |
mail.imap.starttls.required | booleano | Si es verdadero, requiere el uso del comando STARTTLS. Si el servidor no admite el comando STARTTLS o el comando falla, el método de conexión fallará. El valor predeterminado es falso. |
mail.imap.socks.host | cuerda | Especifica el nombre de host de un servidor proxy SOCKS5 que se utilizará para las conexiones al servidor de correo. |
mail.imap.socks.port | cuerda | Especifica el número de puerto del servidor proxy SOCKS5. Esto solo debe usarse si el servidor proxy no está usando el número de puerto estándar de 1080. |
mail.imap.minidletime | En t | Esta propiedad establece el retraso en milisegundos. Si no se establece, el valor predeterminado es 10 milisegundos. |
mail.imap.enableimapevents | booleano | Habilite la entrega de eventos especiales específicos de IMAP al ConnectionListener de la tienda. Si es verdadero, las respuestas no solicitadas recibidas durante el método inactivo de la Tienda se enviarán como ConnectionEvents con un tipo de IMAPStore.RESPONSE. El mensaje del evento será la cadena de respuesta IMAP sin procesar. De forma predeterminada, estos eventos no se envían. |
mail.imap.folder.class | Cuerda | Nombre de clase de una subclase de com.sun.mail.imap.IMAPFolder. La subclase se puede utilizar para proporcionar compatibilidad con comandos IMAP adicionales. La subclase debe tener constructores públicos de la forma public MyIMAPFolder (String fullName, char separator, IMAPStore store, Boolean isNamespace) y public MyIMAPFolder (ListInfo li, IMAPStore store) |
En general, las aplicaciones no deberían necesitar usar las clases en este paquete directamente. En su lugar, deberían utilizar las API definidas por el paquete javax.mail (y subpaquetes). Las aplicaciones nunca deben construir instancias de IMAPStore o IMAPFolder directamente. En su lugar, deben utilizar el método de sesión getStore para adquirir un objeto Store adecuado y, a partir de ese, adquirir objetos Folder.
En el capítulo Gestión de cuotas se muestran ejemplos para utilizar el servidor IMAP .