JavaMail和Exchange Server 2007的问题 - BAD命令参数

时间:2009-06-26 20:01:54

标签: java exchange-server imap javamail exchange-server-2007

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

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,我认为它与它有关(bug?)。 我还确保他们将其更新为最新的Service Pack和汇总更新(撰写本文时的Service Pack 1 update 8)和最新的JavaMail(撰写本文时为1.4.2)并且没有任何影响。 我的问题是,这是我必须等待微软解决的问题吗? 我可以采用一种解决方法吗?

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

1 个答案:

答案 0 :(得分:1)

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

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