سؤال

في تطبيق أعمل على، هناك وظيفة الذي يربط مع خادم البريد عبر 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 2007 أنا على افتراض أنه لديه شيء لتفعله حيال ذلك (علة؟). أنا أيضا متأكد من أنها تحديثه إلى أحدث حزمة الخدمة والتحديثات (حزمة الخدمة 1 التحديث 8 حتى كتابة هذه السطور) وأحدث JavaMail (1.4.2 حتى كتابة هذه السطور)، وأنه قد يؤثر على أي. سؤالي هو، وهذا شيء لا بد لي من الانتظار لمايكروسوفت لإصلاح؟ هل هناك حلا يمكنني استخدام؟

لسجل، والسبب أنا وضع العلم في الآونة الأخيرة إلى false هو أن ذلك لن يتم معالجة الرسالة نظرا مرة أخرى في مسار الثاني (أي فقط العمليات الأخيرة أو رسائل جديدة).

هل كانت مفيدة؟

المحلول

وقراءتي للAPI ل يشير .Flag.RECENT أنه للقراءة فقط من تطبيق العميل. تنفيذ مجلد يجب تعيينها عندما "رسالة جديدة إلى هذا المجلد". لذلك إلا إذا كنت تكتب على تنفيذ المجلد يجب أن لا يتم تعديل هذا العلم.

وهذا يترك المرء إلى التساؤل لماذا عملاء آخرين الخاص بك لا تحصل على خطأ. ربما يتم التعامل معها على أنها NOOP في بعض الحالات؟ ربما هناك شيء خاص حول هذا المجلد عميل معين؟ ربما مجلد مشترك، أو مجلد وللمستخدم الوصول للقراءة أيضا؟ أنا ليست مجهزة للتفكير أسرار مخزن الرسائل تبادل.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top