1

在我正在处理的应用程序中,有一个函数可以使用 JavaMail 通过 IMAP 与邮件服务器连接。我们的一位客户有以下堆栈跟踪:

javax.mail.MessagingException: A13 BAD Command Argument Error. 11; 
nested exception is: 
com.sun.mail.iap.BadCommandException: A13 BAD Command Argument Error. 11 
at com.sun.mail.imap.IMAPMessage.setFlags(IMAPMessage.java:847) 
at javax.mail.Message.setFlag(Message.java:565) ...

现在,它试图做的事情如下:

messages[i].setFlag(Flags.Flag.RECENT, false);

messages[i]一个在哪里javax.mail.Message

现在,我们使用 Exchange Server 2003 的任何客户都从未发生过此错误,并且由于该客户使用的是 Exchange Server 2007,我假设它与它有关(错误?)。我还确保他们将其更新为最新的服务包和汇总更新(撰写本文时的服务包 1 更新 8)和最新的 JavaMail(撰写本文时为 1.4.2)并且没有任何影响。我的问题是,这是我必须等待微软解决的问题吗?有没有我可以采用的解决方法?

作为记录,我将最近标志设置为 false 的原因是,给定的消息将不会在第二次传递中再次处理(即它只处理最近的或新的消息)。

4

1 回答 1

1

我对Flags.Flag.RECENT API 的阅读表明它在客户端应用程序中是只读的。当“消息是此文件夹的新消息”时,文件夹实现应设置它。因此,除非您正在编写文件夹实现,否则不应修改此标志。

这让人想知道为什么您的其他客户没有收到错误。也许在某些情况下它被视为 NOOP?也许这个特定客户的文件夹有什么特别之处?也许是共享文件夹,或者用户也有读取权限的文件夹?我没有能力思考 Exchange 消息存储的奥秘。

于 2009-06-30T20:07:50.487 回答