o java mail reclama quando tento salvar, gera a seguinte exception:
javax.mail.IllegalWriteException: POP3 messages are read-only
at com.sun.mail.pop3.POP3Message.saveChanges(POP3Message.java:499)
at br.com.arius.ReadMail.run(ReadMail.java:74)
M
mauricioadl
ele diz que o pop eh somente leitura, so que quando eu baixo um e-mail com o thunderbird e vou no webmail o e-mail esta marcado como lido, ou seja o thunderbird consegue. estranho! :shock:
A
aix
mauricioadl:
o java mail reclama quando tento salvar, gera a seguinte exception:
javax.mail.IllegalWriteException: POP3 messages are read-only
at com.sun.mail.pop3.POP3Message.saveChanges(POP3Message.java:499)
at br.com.arius.ReadMail.run(ReadMail.java:74)
eu não lembro de cabeça tem que ver na documentação, mas acredito que não tenha que salvar nada, acredito que para POP3 seja parecido como deletar, você seta a Flag. fecha a pasta e pronto, o que vc quis dizer com salvar ? vc esta fazendo inputstream na pasta ?
M
mauricioadl
se eu apenas setar a flag nada acontece com a mensagem, ela continua vindo como nao lida, entao eu tento salvar a modificacao na mensagem ae gera o erro
// seta a flagmessage.setFlag(Flags.Flag.SEEN,true);// salva a modificacaomessage.saveChanges();
M
mauricioadl
outra coisa que acabei de reparar, se usar o pop3 o comando: message.isSet(Flags.Flag.SEEN)
sempre retorna false independe se a mensagem foi lida ou nao.
se usar imap ele retorna correto.
A
aix
mauricioadl:
outra coisa que acabei de reparar, se usar o pop3 o comando: message.isSet(Flags.Flag.SEEN)
sempre retorna false independe se a mensagem foi lida ou nao.
se usar imap ele retorna correto.
POP3 supports no permanent flags (see Folder.getPermanentFlags()). In particular, the Flags.Flag.RECENT flag will never be set for POP3 messages. It’s up to the application to determine which messages in a POP3 mailbox are “new”. There are several strategies to accomplish this, depending on the needs of the application and the environment:
acredito que seja possivel assim: verificando o UID da mensagem.
getUID ( Message msg)
Retornar a string ID único para esta mensagem, ou null se não estiver disponível.
M
mauricioadl
so que o folder nao eh a mensagem e sim a pasta que contem as mensagens. entao o id unico dele nao serve.
M
mauricioadl
achei na documentacao que pop3message NÃO pode ser alterada mesmo, sera preciso fazer alguma manobra para isso. basta saber como os clientes de e-mail comum faz.
sugestoes???
F
Franciscato
Mauricio.
Desculpa ressuscitar o tópico, mas, conseguiu resolver essa bagaça?
Abraço.
M
mauricioadl
Franciscato:
Mauricio.
Desculpa ressuscitar o tópico, mas, conseguiu resolver essa bagaça?
Abraço.
Cara, pra falar a verdade eu não resolvi! Forcei os clientes a usarem IMAP, dae funfa de boa!
[]'s
F
Franciscato
OK.
Vou acabar forçando os clientes a usar IMAP mesmo.
Mais uma coisa: Voce está movendo as mensagens de pasta ou apenas marcando-as com a Flags.flag.SEEN?
Valew.
M
mauricioadl
Franciscato:
OK.
Vou acabar forçando os clientes a usar IMAP mesmo.
Mais uma coisa: Voce está movendo as mensagens de pasta ou apenas marcando-as com a Flags.flag.SEEN?
Valew.
No início eu marcava como seen, mas depois eu comecei mover para uma pasta de backup prq se não me engano o javamail traz todos os e-mails, mesmo os que estão marcados. dae ficava bem lento.
[]'s
F
Franciscato
Beleza Maurício, obrigado pela ajuda cara!
F
Franciscato
No início eu marcava como seen, mas depois eu comecei mover para uma pasta de backup prq se não me engano o javamail traz todos os e-mails, mesmo os que estão marcados. dae ficava bem lento.
[]'s
Sem querer explorar, mas já explorando, minha pasta simplesmente se nega a existir. Como ficou sua construção?
Segue como fiz:
Classe:
/* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */packagecom.mycompany.leremail;importjava.io.IOException;importjava.util.Properties;importjavax.mail.Folder;importjavax.mail.Message;importjavax.mail.MessagingException;importjavax.mail.Session;importjavax.mail.Store;/** * * @author DBS */publicclassMain{publicstaticvoidmain(String[]args)throwsMessagingException,IOException{System.setProperty("javax.net.ssl.trustStoreType","JKS");System.setProperty("javax.net.ssl.trustStore","C:\\ImportacaoNF-e\\jssecacerts");System.setProperty("javax.net.ssl.trustStorePassword","changeit");Propertiesprops=newProperties();props.setProperty("mail.store.protocol","imap");Sessionsession=Session.getInstance(props,null);Storestore=session.getStore();store.connect("mail.unicampo.coop.br","[email removido]","secret");Folderfolder=store.getFolder("INBOX");folder.open(Folder.READ_WRITE);for(Messagemessage:folder.getMessages()){System.out.println(message.getSubject());}FolderfolderLidas=store.getFolder("lidas");folderLidas.open(Folder.HOLDS_FOLDERS);folder.copyMessages(folder.getMessages(),folderLidas);folder.close(true);store.close();}}
Saída do depurador:
Mensagem de confirmação/Confirmation message (Unicampo - Nota Fiscal de Serviço Eletrônica -)
Exception in thread "main" javax.mail.FolderNotFoundException: folder is not INBOX
at com.sun.mail.pop3.POP3Folder.open(POP3Folder.java:205)
at com.mycompany.leremail.Main.main(Main.java:46)