JavaMailを使用してフォルダから別のメッセージをコピーするときにスローされることがあります。
-
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.
.
とDebuggerによって、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()を削除した後、例外はもうスローされていませんが、実際には失敗は依然として存在し、一部のメッセージがターゲットにコピーされているとともに削除されているメッセージが削除されています。ソース、およびそれらのライトル番号はターゲットにコピーされますが、そこにはソースでは削除されました。
解決
おそらく、あなたがコピーしているメッセージの一部は、アプリケーションまたは同じフォルダにアクセスする他のアプリケーションのいずれかによって削除され、拡大されていますか?詳細なプロトコルトレースはより多くの情報を提供するかもしれません。
所属していません StackOverflow