Исключение иногда бросается при копировании сообщений из папки на другую с помощью JavaMail

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

  •  21-12-2019
  •  | 
  •  

Вопрос

При попытке скопировать список сообщений из одной папки на другую, появится эти исключения.

 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) ...
.

Мой код:

 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():
  }   
.

Редактировать:

Перед удалением

   source.expunge();
.

Обращенное исключение было:

   messageRemovedException. 
.

И ничего не говорится от отладчика больше, чем то, что уже говорилось о инициализации сеанса 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.
.

Что я хочу сказать, это то, что после удаления Source.expunge () из кода больше не бросается исключение, но на самом деле ошибка все еще существует, некоторые сообщения копируются на целевую цену и установить удаленные вИсточник, и номер литла скопированы на цель, но установленные там, а не в источнике.

Это было полезно?

Решение

Возможно, некоторые сообщения, которые вы копируете, были удалены и удалены, либо по вашему приложению, либо каким-либо другим приложением, доступа к одной и той же папке?Подробный протокольный трассу может предоставить больше информации.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top