JavaMail

Olá pessoal, estou desenvolvendo uma ferramenta para recebimento e envio de emails, bom comecei pela parte de receber os emails, e esta funcionando, só que toda vez que eu verifico os emails para receber vem todos os emails da caixa de entrada inclusive aqueles que já foram lidos e recebidos.

Minha dúvida é a seguinte como eu faço para receber apenas os emails que NÃO foram lidos ainda, emails já lidos não me interessam, quero trazer para dentro do programa e armazenar no BD apenas o emails que ainda nao foram lidos.

alguém ai desenvolveu algo parecido?
Se tiver alguma solução ou me mostrar o caminho para resolver este problema fico agradecido.

Abraço a todos.

1 curtida

Cara, tem a classe Flags.
Nela tem exemplo de sua utilização, no caso assim:

// Check if DELETED flag is set of this message
 if (m.isSet(Flags.Flag.DELETED))
        System.out.println("DELETED message");

Tenta usar a Flag SEEN. Senão me engano, ela indica que a mensagem já foi lida, sendo assim, pode fazer um false e se confirmar, pode considerar a mensagem em questão como “não lida” e assim filtrar. Pode ter outras formas, mas não me recordo no momento.

Abraços.

1 curtida

[quote=nel]Cara, tem a classe Flags.
Nela tem exemplo de sua utilização, no caso assim:

// Check if DELETED flag is set of this message
 if (m.isSet(Flags.Flag.DELETED))
        System.out.println("DELETED message");

Tenta usar a Flag SEEN. Senão me engano, ela indica que a mensagem já foi lida, sendo assim, pode fazer um false e se confirmar, pode considerar a mensagem em questão como “não lida” e assim filtrar. Pode ter outras formas, mas não me recordo no momento.

Abraços.[/quote]

Opa desculpe a demora para responder, então eu testei dessa forma que vc disse usando a flag SEEN para ver se as mensagens ja foram lidas, só que sempre retorna false, mesmo a mensagem estando lida.

A unica maneira que encontrei até agora de não pegar emails que meu programa já leu e cadastro no BD é setando a flag DELETED como true, só que o problema é que dessa maneira o email é apagado do servidor.

message[i].setFlag(Flags.Flag.DELETED, true); 

Eu queria apenas pegar as que não foram lidas e não ter que deletalas.

O protocolo que estou usando para fazer a leitura dos emails é o POP3, eu li em algum lugar que com o POP3 não é possível alterar o status dos emails, disseram que só possivel fazer essas alterações utilizando o protocolo IMAP, pois tentei fazer a alteração da Flag SEEN com IMAP mas também não consegui deu o mesmo problema do POP3, fala que eu so tenho permição de leitura, mesmo eu definindo que eu queria permição de Leitura e Gravação

inbox.open(Folder.READ_WRITE);
1 curtida