私が進めているアプリケーションでは、JavaMailを使用してIMAP経由でメールサーバーに接続する機能があります。JavaMailとExchange Server 2007の問題 - BADコマンドの引数
今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]
がjavax.mail.Message
ある
messages[i].setFlag(Flags.Flag.RECENT, false);
私たちのクライアントの一つは、次のスタックトレースを持っていました。
このエラーは、Exchange Server 2003を使用しているクライアントでは発生していません。また、このクライアントはExchange Server 2007を使用しているため、何か問題があると思われます。 また、最新のサービスパックとロールアップアップデート(この記事の時点ではサービスパック1のアップデート8)と最新のJavaMail(この記事の執筆時点では1.4.2)に更新されていることを確認しました。 私の質問は、Microsoftが修正するのを待たなければならないことですか? 私は採用できる回避策がありますか?
最近のフラグをfalseに設定している理由は、指定されたメッセージが2回目のパスで再度処理されないようにするためです(つまり、最近または新しいメッセージのみを処理する)。
Exchange Server 2007の他のクライアントにも同じ問題がありました。彼らは、メールボックスを削除して再作成し、2003年から2007年にアップグレードの問題に至るまでに問題を「解決」しました。この他のクライアントには、メールボックスの再作成にもかかわらず問題があります。現在、2003年を使用しているクライアントはまだ不平を言っていません。 – Avrom
あなたが正しく指しているJavadocを理解している場合、メールフォルダを適切に閉じてから後で再度開くと、直前に開いていたすべてのメッセージの最近のフラグがオフになるはずです。もしそうなら、それは私の必要を満たすはずです。 – Avrom
@Avrom:それは私の理解だろう。クローズと再オープンは、新しいメッセージをRECENTとしてマークする必要があります。しかし、あなたのアプリだけがフォルダにアクセスしていますか?そうでない場合は、他のアプリがフォルダを開いたり閉じたりすると問題が発生すると思われます。私はExchange(または任意のIMAPサーバー)があなたのアプリケーションのためだけにRECENTフラグを保持するかどうかは疑いがあります。アプリケーションが処理されたメッセージを知ることが重要な場合は、おそらくメッセージにユーザー定義のフラグを設定する必要があります。 –