A veces se tira la excepción al copiar los mensajes de la carpeta a otra usando JavaMail

StackOverflow https://stackoverflow.com//questions/21040020

  •  21-12-2019
  •  | 
  •  

Pregunta

Al intentar copiar una lista de mensajes de una carpeta a otra, en algún momento aparece estas excepciones.

 nested exception is :
 com.sun.mail.iap.BadCommandException: A5 BAD COPY failed. Invalid messageset.
 at com.sun.mail.imap.IMAPFolder.copyMesages(IMAPFolder.java.1769)
 Caused by:
 com.sun.mail.iap.BadCommandException: A5 BAD COPY failed. Invalid messageset.
 at com.sun.mail.iap.Protocol.handleResult(Protocol.java:353)
 at com.sun.mail.iap.Protocol.simpleCommand(Protocol.java:373) ...

Mi código:

 public void moveMessageToTrash(String sourceFolder, String destinationFolder,
                         MimeMessage mimeMessage) throws MessagingException
  {
   IMAPFolder source = null;
   IMAPFolder destination = null;
   if(store.isConnected())
    {
     source = (IMAPFolder) store.getFolder(sourceFolder);
     destin= (IMAPFolder) store.getFolder(destinationFolder);
     source.open(Folder.READ_WRITE);
     destin.open(Folder.READ_WRITE);
    }
   Message [] messages = new MimeMessage[1];
   messages[0] = mimeMessage;
   source.copyMessages(messages,destin);
   source.setFlags(messages,new Flags(Flags.Flag.DELETED),true);
   source.expunge():
  }   

Editar:

antes de retirar el

   source.expunge();

La excepción lanzada fue:

   messageRemovedException. 

Y no se dice nada por el depurador más de lo que ya se dice en la inicialización de la sesión de JavaMail:

When the copy fails, nothing is said by the debugger. Everything is shown is only at the initialization of the session :

   INFO : DEBUG : JavaMail version 1.5.1
   INFO : DEBUG : failed to load any providers, using defaults.
   INFO : DEBUG : Tables of loaded providers.
   INFO : DEBUG : Providers Listed By Class Name :     {com.sun.mail.smtp.SMTPSSLTRANSORT=javax.mail.Provider[TRANSPORT,smtps,com.sun.mail.smtp.SMTPSSLTRANSPORT,Oracle,1.5.1]....
   INFO : DEBUG : Providers Listed By Protocol :
   ....
   INFO : DEBUG : failed to load address map, using defaults.

Lo que quiero decir es que después de que me quité la fuente. EXPOSITIVO () desde el código, ya no se está lanzando una excepción, pero en realidad la falla aún existe, algunos mensajes se están copiando al objetivo y se eliminan en el objetivo.La fuente, y un número de litle de ellos se copian al objetivo, pero se establece eliminado allí, no en la fuente.

¿Fue útil?

Solución

Posiblemente algunos de los mensajes que está copiando han sido eliminados y eliminados, ya sea por su solicitud o por alguna otra aplicación que accede a la misma carpeta?Un rastreo detallado de protocolo podría proporcionar más información.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top