API JavaMail - Servidores POP3

Post Office Protocol (POP) é ​​um protocolo padrão da camada de aplicativo da Internet usado por clientes de e-mail locais para recuperar e-mail de um servidor remoto por meio de uma conexão TCP / IP. O POP oferece suporte a requisitos simples de download e exclusão para acesso a caixas de correio remotas. Um servidor POP3 escuta na conhecida porta 110.

Pacote com.sun.mail.pop3é um provedor de protocolo POP3 para a API JavaMail que fornece acesso a um armazenamento de mensagens POP3. A tabela abaixo lista as classes neste pacote:

NomeDescrição
POP3FolderUma pasta POP3 (só pode ser "INBOX").
POP3MessageUma mensagem POP3.
POP3SSLStoreUm armazenamento de mensagens POP3 usando SSL.
POP3StoreUm armazenamento de mensagens POP3.

Alguns pontos a serem observados acima deste provedor:

  • O provedor POP3 suporta apenas uma única pasta chamada INBOX. Devido às limitações do protocolo POP3, muitos dos recursos da API JavaMail, como notificação de eventos, gerenciamento de pastas, gerenciamento de sinalizadores, etc., não são permitidos.

  • O provedor POP3 é acessado por meio das APIs JavaMail usando o nome de protocolo pop3 ou uma URL no formato pop3: // usuário: senha @ host: porta / INBOX " .

  • POP3 não oferece suporte a sinalizadores permanentes. Por exemplo, o sinalizador Flags.Flag.RECENT nunca será definido para mensagens POP3. Cabe ao aplicativo determinar quais mensagens em uma caixa de correio POP3 são novas .

  • POP3 não oferece suporte ao método Folder.expunge (). Para excluir e eliminar mensagens, defina o sinalizador Flags.Flag.DELETED nas mensagens e feche a pasta usando o método Folder.close (true).

  • POP3 não fornece uma data de recebimento , portanto, o método getReceivedDate retornará nulo.

  • Quando os cabeçalhos de uma mensagem POP3 são acessados, o provedor POP3 usa o comando TOP para buscar todos os cabeçalhos, que são armazenados em cache.

  • Quando o conteúdo de uma mensagem POP3 é acessado, o provedor POP3 usa o comando RETR para buscar a mensagem inteira.

  • O método POP3Message.invalidate pode ser usado para invalidar os dados armazenados em cache sem fechar a pasta.

O provedor de protocolo POP3 oferece suporte às seguintes propriedades, que podem ser definidas no objeto JavaMail Session. As propriedades são sempre definidas como strings; a coluna Tipo descreve como a string é interpretada.

NomeTipoDescrição
mail.pop3.userCordaNome de usuário padrão para POP3.
mail.pop3.hostCordaO servidor POP3 ao qual se conectar.
mail.pop3.portintA porta do servidor POP3 à qual se conectar, se o método connect () não especificar explicitamente uma. O padrão é 110.
mail.pop3.connectiontimeoutintValor de tempo limite de conexão do soquete em milissegundos. O padrão é tempo limite infinito.
mail.pop3.timeoutintValor de tempo limite de E / S do soquete em milissegundos. O padrão é tempo limite infinito.
mail.pop3.rsetbeforequitboleanoEnvie um comando POP3 RSET ao fechar a pasta, antes de enviar o comando QUIT. O padrão é falso.
mail.pop3.message.class CordaNome da classe de uma subclasse de com.sun.mail.pop3.POP3Message. A subclasse pode ser usada para manipular (por exemplo) cabeçalhos Content-Type não padrão. A subclasse deve ter um construtor público da forma MyPOP3Message (Folder f, int msgno) lança MessagingException.
mail.pop3.localaddressCordaEndereço local (nome do host) para vincular ao criar o soquete POP3. O padrão é o endereço escolhido pela classe Socket.
mail.pop3.localport intNúmero da porta local para vincular ao criar o soquete POP3. O padrão é o número da porta escolhido pela classe Socket.
mail.pop3.apop.enable boleanoSe definido como verdadeiro, use APOP em vez de USER / PASS para fazer login no servidor POP3, se o servidor POP3 suportar APOP. APOP envia um resumo da senha em vez da senha em texto não criptografado. O padrão é falso.
mail.pop3.socketFactoryFábrica de SoquetesSe definida como uma classe que implementa a interface javax.net.SocketFactory, esta classe será usada para criar soquetes POP3.
mail.pop3.socketFactory.classCordaSe definido, especifica o nome de uma classe que implementa a interface javax.net.SocketFactory. Esta classe será usada para criar soquetes POP3.
mail.pop3.socketFactory.fallbackboleanoSe 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.pop3.socketFactory.port intEspecifica a porta para conectar ao usar a fábrica de soquetes especificada. Se não for definida, a porta padrão será usada.
mail.pop3.ssl.enableboleanoSe definido como verdadeiro, use SSL para conectar e usar a porta SSL por padrão. O padrão é falso para o protocolo "pop3" e verdadeiro para o protocolo "pop3s".
mail.pop3.ssl.checkserveridentity boleanoSe definido como verdadeiro, verifique a identidade do servidor conforme especificado pelo RFC 2595. O padrão é falso.
mail.pop3.ssl.trust CordaSe 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.pop3.ssl.socketFactorySSL Socket FactorySe definida como uma classe que estende a classe javax.net.ssl.SSLSocketFactory, essa classe será usada para criar soquetes SSL POP3.
mail.pop3.ssl.socketFactory.class CordaSe definido, especifica o nome de uma classe que estende a classe javax.net.ssl.SSLSocketFactory. Esta classe será usada para criar soquetes SSL POP3.
mail.pop3.ssl.socketFactory.port intEspecifica a porta para conectar ao usar a fábrica de soquetes especificada. Se não for definida, a porta padrão será usada.
mail.pop3.ssl.protocolscordaEspecifica 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.pop3.starttls.enable boleanoSe verdadeiro, habilita o uso do comando STLS (se compatível com o servidor) para alternar a conexão para uma conexão protegida por TLS antes de emitir qualquer comando de login. O padrão é falso.
mail.pop3.starttls.required boleanoSe verdadeiro, requer o uso do comando STLS. Se o servidor não suportar o comando STLS ou se o comando falhar, o método de conexão falhará. O padrão é falso.
mail.pop3.socks.hostcordaEspecifica o nome do host de um servidor proxy SOCKS5 que será usado para conexões com o servidor de e-mail.
mail.pop3.socks.port cordaEspecifica o número da porta para o servidor proxy SOCKS5.
mail.pop3.disabletop boleanoSe definido como verdadeiro, o comando POP3 TOP não será usado para buscar cabeçalhos de mensagens. O padrão é falso.
mail.pop3.forgettopheadersboleanoSe definido como verdadeiro, os cabeçalhos que podem ter sido recuperados usando o comando POP3 TOP serão esquecidos e substituídos por cabeçalhos recuperados como parte do comando POP3 RETR. O padrão é falso.
mail.pop3.filecache.enableboleanoSe definido como verdadeiro, o provedor POP3 armazenará em cache os dados da mensagem em um arquivo temporário em vez de na memória. As mensagens são adicionadas ao cache apenas ao acessar o conteúdo da mensagem. Os cabeçalhos das mensagens são sempre armazenados em cache na memória (sob demanda). O cache do arquivo é removido quando a pasta é fechada ou o JVM é encerrado. O padrão é falso.
mail.pop3.filecache.dir CordaSe o cache de arquivo estiver ativado, esta propriedade pode ser usada para substituir o diretório padrão usado pelo JDK para arquivos temporários.
mail.pop3.cachewriteto boleanoControla o comportamento do método writeTo em um objeto de mensagem POP3. Se definido como verdadeiro, e o conteúdo da mensagem ainda não foi armazenado em cache e ignoreList for nulo, a mensagem será armazenada em cache antes de ser gravada. Caso contrário, a mensagem é transmitida diretamente para o fluxo de saída sem ser armazenada em cache. O padrão é falso.
mail.pop3.keepmessagecontentboleanoSe esta propriedade for definida como true, uma referência permanente ao conteúdo em cache será mantida, evitando que a memória seja reutilizada até que a pasta seja fechada ou o conteúdo em cache seja explicitamente invalidado (usando o método invalidate). O padrão é falso.

Em geral, os aplicativos não devem 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 POP3Store ou POP3Folder diretamente. Em vez disso, eles devem usar o método getStore de Session para adquirir um objeto Store apropriado e, a partir desse objeto, adquirir objetos Folder.

Exemplos para usar o servidor POP3 são demonstrados no capítulo Verificando e-mails .