JavaMail

2 respostas
D

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.

2 Respostas

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.

D

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.

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);
Criado 2 de dezembro de 2011
Ultima resposta 5 de dez. de 2011
Respostas 2
Participantes 2