API JavaMail - Servidores IMAP

IMAP é um acrônimo para Internet Message Access Protocol. É um protocolo de Internet da camada de aplicativo que permite que um cliente de e-mail acesse o e-mail em um servidor de e-mail remoto. Um servidor IMAP geralmente escuta na porta 143 conhecida. IMAP sobre SSL (IMAPS) é atribuído ao número de porta 993.

IMAP suporta modos de operação on-line e off-line. Os clientes de e-mail que usam IMAP geralmente deixam mensagens no servidor até que o usuário as exclua explicitamente.

Pacote com.sun.mail.imapé um provedor de protocolo IMAP para a API JavaMail que fornece acesso a um armazenamento de mensagem IMAP. A tabela a seguir lista a interface e as classes deste provedor:

Classe / Interface Descrição
IMAPFolder.ProtocolCommand Esta é uma interface simples para comandos de protocolo IMAP definidos pelo usuário.
ACL Esta é uma aula. Uma entrada da lista de controle de acesso para um identificador de autenticação específico (usuário ou grupo).
IMAPFolder Esta classe implementa uma pasta IMAP.
IMAPFolder.FetchProfileItem Esta é uma classe para buscar cabeçalhos.
IMAPMessage Esta classe implementa um objeto ReadableMime.
IMAPMessage.FetchProfileCondition Esta classe implementa o teste a ser feito em cada mensagem da pasta.
IMAPSSLStore Esta classe fornece acesso a um armazenamento de mensagens IMAP por SSL.
IMAPStore Esta classe fornece acesso a um armazenamento de mensagens IMAP.
Direitos Esta classe representa o conjunto de direitos para um identificador de autenticação (por exemplo, um usuário ou grupo).
Rights.Right Esta classe interna representa um direito individual.
SortTerm Um critério de classificação específico, conforme definido pela RFC 5256.

Alguns pontos a serem observados acima deste provedor:

  • Este provedor oferece suporte aos protocolos IMAP4 e IMAP4rev1.

  • Um IMAPStore conectado mantém um pool de objetos de protocolo IMAP para uso na comunicação com o servidor IMAP. Conforme as pastas são abertas e novos objetos de protocolo IMAP são necessários, o IMAPStore irá fornecê-los do pool de conexão ou criá-los se nenhum estiver disponível. Quando uma pasta é fechada, seu objeto de protocolo IMAP é retornado ao pool de conexão do pool.

  • O objeto IMAPStore conectado pode ou não manter um objeto de protocolo IMAP separado que fornece ao armazenamento uma conexão dedicada ao servidor IMAP.

O provedor de protocolo IMAP suporta as seguintes propriedades, que podem ser definidas no objeto JavaMail Session. As propriedades são sempre definidas como strings; aType coluna descreve como a string é interpretada.

Nome Tipo Descrição
mail.imap.user Corda Nome de usuário padrão para IMAP.
mail.imap.host Corda O servidor IMAP ao qual se conectar.
mail.imap.port int A porta do servidor IMAP à qual se conectar, se o método connect () não especificar explicitamente uma. O padrão é 143.
mail.imap.partialfetch boleano Controla se o recurso de busca parcial IMAP deve ser usado. O padrão é verdadeiro.
mail.imap.fetchsize int Tamanho de busca parcial em bytes. O padrão é 16K.
mail.imap.ignorebodystructuresize boleano A resposta IMAP BODYSTRUCTURE inclui o tamanho exato de cada parte do corpo. Normalmente, este tamanho é usado para determinar quantos dados buscar para cada parte do corpo. O padrão é falso.
mail.imap.connectiontimeout int Valor de tempo limite de conexão do soquete em milissegundos. O padrão é tempo limite infinito.
mail.imap.timeout int Valor de tempo limite de E / S do soquete em milissegundos. O padrão é tempo limite infinito.
mail.imap.statuscachetimeout int Valor de tempo limite em milissegundos para o cache de resposta do comando STATUS. O padrão é 1000 (1 segundo). Zero desativa o cache.
mail.imap.appendbuffersize int Tamanho máximo de uma mensagem para armazenar em buffer na memória ao anexar a uma pasta IMAP.
mail.imap.connectionpoolsize int Número máximo de conexões disponíveis no pool de conexão. O padrão é 1.
mail.imap.connectionpooltimeout int Valor de tempo limite em milissegundos para conexões do pool de conexão. O padrão é 45000 (45 segundos).
mail.imap.separatestoreconnection boleano Sinalizador para indicar se deve ser usada uma conexão de armazenamento dedicada para comandos de armazenamento. O padrão é falso.
mail.imap.auth.login.disable boleano Se verdadeiro, evita o uso do comando AUTHENTICATE LOGIN não padrão, em vez de usar o comando LOGIN simples. O padrão é falso.
mail.imap.auth.plain.disable boleano Se verdadeiro, evita o uso do comando AUTHENTICATE PLAIN. O padrão é falso.
mail.imap.auth.ntlm.disable boleano Se verdadeiro, evita o uso do comando AUTHENTICATE NTLM. O padrão é falso.
mail.imap.proxyauth.user Corda Se o servidor suportar a extensão PROXYAUTH, esta propriedade especificará o nome do usuário para atuar. Autentique-se no servidor usando as credenciais do administrador. Após a autenticação, o provedor IMAP emitirá o comando PROXYAUTH com o nome de usuário especificado nesta propriedade.
mail.imap.localaddress Corda Endereço local (nome do host) para vincular ao criar o soquete IMAP. O padrão é o endereço escolhido pela classe Socket.
mail.imap.localport int Número da porta local para vincular ao criar o soquete IMAP. O padrão é o número da porta escolhido pela classe Socket.
mail.imap.sasl.enable boleano Se definido como verdadeiro, tente usar o pacote javax.security.sasl para escolher um mecanismo de autenticação para login. O padrão é falso.
mail.imap.sasl.mechanisms Corda Uma lista separada por espaço ou vírgula de nomes de mecanismo SASL para tentar usar.
mail.imap.sasl.authorizationid Corda O ID de autorização a ser usado na autenticação SASL. Se não for definido, o ID de autenticação (nome do usuário) será usado.
mail.imap.sasl.realm Corda O domínio a ser usado com os mecanismos de autenticação SASL que requerem um domínio, como DIGEST-MD5.
mail.imap.auth.ntlm.domain Corda O domínio de autenticação NTLM.
mail.imap.auth.ntlm.flags int Sinalizadores específicos do protocolo NTLM.
mail.imap.socketFactory Fábrica de Soquetes Se definida como uma classe que implementa a interface javax.net.SocketFactory, esta classe será usada para criar sockets IMAP.
mail.imap.socketFactory.class Corda Se definido, especifica o nome de uma classe que implementa a interface javax.net.SocketFactory. Esta classe será usada para criar sockets IMAP.
mail.imap.socketFactory.fallback boleano Se definido como verdadeiro, a falha em criar um soquete usando a classe de fábrica de soquete especificada fará com que o soquete seja criado usando a classe java.net.Socket. O padrão é verdadeiro.
mail.imap.socketFactory.port int Especifica a porta para conectar ao usar a fábrica de soquetes especificada. A porta padrão é usada quando não está definida.
mail.imap.ssl.enable boleano Se definido como verdadeiro, use SSL para conectar e usar a porta SSL por padrão. O padrão é falso para o protocolo "imap" e verdadeiro para o protocolo "imaps".
mail.imap.ssl.checkserveridentity boleano Se definido como verdadeiro, verifique a identidade do servidor conforme especificado pelo RFC 2595. O padrão é falso.
mail.imap.ssl.trust Corda Se definido, e um socket factory não foi especificado, habilita o uso de MailSSLSocketFactory.
Se definido como "*", todos os hosts são confiáveis.
Se definido como uma lista de hosts separados por espaços em branco, esses hosts são confiáveis.
Caso contrário, a confiança depende do certificado que o servidor apresenta.
mail.imap.ssl.socketFactory SSL Socket Factory Se definida como uma classe que estende a classe javax.net.ssl.SSLSocketFactory, esta classe será usada para criar soquetes SSL IMAP.
mail.imap.ssl.socketFactory.class Corda Se definido, especifica o nome de uma classe que estende a classe javax.net.ssl.SSLSocketFactory. Esta classe será usada para criar sockets IMAP SSL.
mail.imap.ssl.socketFactory.port int Especifica a porta para conectar ao usar a fábrica de soquetes especificada. Se não for definida, a porta padrão será usada.
mail.imap.ssl.protocols corda Especifica os protocolos SSL que serão ativados para conexões SSL. O valor da propriedade é uma lista separada por espaços em branco de tokens aceitáveis ​​para o método javax.net.ssl.SSLSocket.setEnabledProtocols.
mail.imap.starttls.enable boleano Se verdadeiro, habilita o uso do comando STARTTLS (se suportado pelo servidor) para mudar a conexão para uma conexão protegida por TLS antes de emitir qualquer comando de login. O padrão é falso.
mail.imap.starttls.required boleano Se verdadeiro, requer o uso do comando STARTTLS. Se o servidor não suportar o comando STARTTLS ou se o comando falhar, o método de conexão falhará. O padrão é falso.
mail.imap.socks.host corda Especifica o nome do host de um servidor proxy SOCKS5 que será usado para conexões com o servidor de e-mail.
mail.imap.socks.port corda Especifica o número da porta para o servidor proxy SOCKS5. Deve ser usado apenas se o servidor proxy não estiver usando o número de porta padrão 1080.
mail.imap.minidletime int Esta propriedade define o atraso em milissegundos. Se não for definido, o padrão é 10 milissegundos.
mail.imap.enableimapevents boleano Habilite eventos específicos de IMAP especiais a serem entregues ao ConnectionListener da Loja. Se verdadeiro, as respostas não solicitadas recebidas durante o método ocioso da Loja serão enviadas como ConnectionEvents com um tipo de IMAPStore.RESPONSE. A mensagem do evento será a string de resposta IMAP bruta. Por padrão, esses eventos não são enviados.
mail.imap.folder.class Corda Nome da classe de uma subclasse de com.sun.mail.imap.IMAPFolder. A subclasse pode ser usada para fornecer suporte para comandos IMAP adicionais. A subclasse deve ter construtores públicos da forma public MyIMAPFolder (String fullName, char separator, IMAPStore store, Boolean isNamespace) e public MyIMAPFolder (ListInfo li, IMAPStore store)

Em geral, os aplicativos não precisam usar as classes deste pacote diretamente. Em vez disso, eles devem usar as APIs definidas pelo pacote javax.mail (e subpacotes). Os aplicativos nunca devem construir instâncias de IMAPStore ou IMAPFolder diretamente. Em vez disso, eles devem usar o método getStore de Session para adquirir um objeto Store apropriado e, a partir desse, objetos Folder.

Exemplos de uso do servidor IMAP são demonstrados no capítulo Gerenciamento de cotas .