遍历邮箱数据库的所有 Document :
根据 DocumentCollection dc = dbMail.getAllDocuments(); 我们获得了该数据库中存储的所有 Document 的集合,这就是所有的邮件。于是可以遍历了:
Code |
if (dbMail != null) { DocumentCollection dc = dbMail.getAllDocuments(); System.out.println("Mail database : " + dbMail.getTitle() + " is " + ((int )(dbMail.getSize()/1024)) + "KB long and has " + dc.getCount() + " documents");
String fn = dbMail.getFileName(); String title = dbMail.getTitle(); System.out.println(fn.toUpperCase() + " - " + title);
Document doc = dc.getFirstDocument(); while (doc != null) { System.out.println( doc.getItemValueString("Subject")); System.out.println("~~~~~~~~~~~~~~~~~~~~\r\n"); System.out.println("From=" + doc.getItemValueString("From")); System.out.println("~~~~~~~~~~~~~~~~~~~~\r\n"); System.out.println("Body=" + doc.getItemValueString("Body")); System.out.println("~~~~~~~~~~~~~~~~~~~~\r\n");
String readFlag = doc.getItemValueString("Readed"); if (readFlag == null || readFlag!= "1" ) { doc.appendItemValue("Readed ", "1"); if (doc.save()) System.out.println("Document created and saved"); else System.out.println("Something went wrong"); } else System.out.println(" 发现已经打上了标记 !");
String docNoteID = doc.getNoteID(); System.out.println("NoteID = " + docNoteID); String docNoteURL = doc.getNotesURL(); System.out.println("NoteURL = " + docNoteURL);
doc.recycle(); doc = dc.getNextDocument(); }
|
我们通过 String readFlag = doc.getItemValueString("Readed"); 可以获得这个邮件的“ Readed ”字段 ( 自定义字段 ) 。如果这个字段不存在,说明我们是第一次浏览该封邮件。这样的话,我们通过 doc.appendItemValue("Readed ", "1"); 以及 doc.save() ,给该封邮件增加这个已浏览标示字段。
另外,转《通过 JAVA-CORBA 访问 Domino 》中一段很有帮助的话:
如何从 lotus.domino.NotesException 中获取错误信息:
在你编写 domino 的 java/corba 应用程序时,不可避免的要同异常处理打交道, NotesException 当然是每个开发人员都不愿见到的但又不得不经常面对的问题。
如果你在写程序时尽是简单的采用
try{ …. }catch(Exception e){ e.printStackTrace(); } |
的形式捕捉异常,那么一旦代码抛出异常,你将变得一筹莫展,因为屏幕上不会打印出任何对你提供帮助的信息,这方面的资料更是凤毛翎角, 连 IBM 的官方文档中都没有丰富的错误信息提示。错误捕捉代码应该这样写:
try{ …. }catch(Exception e){ if(ex instanceof lotus.domino.NotesException){ System.out.println( " 通过 CORBA 访问数据库发生错误,错误代码为 " +((lotus.domino.NotesException)ex).id); } e. printStackTrace(); } |
这是屏幕上将打印出错误代码,有了错误代码,我们还要知道错误代码的含义,这就要到 IDL 文件中去查了。在 corba.dll 文件中 NotesError 这个接口定义了全部错误代码(自己要做一下简单的加法才能知道那里面错误代码的具体值),错误代码的变量名正是错误信息。这样你便可以对出现的问题了然于胸了 , 对你解决突发性事件很有帮助。
参考资料:
1 :《 Java 对 Domino Objects 的访问》, by Robert Perron,Steve
2 :《用 Java 通过 DIIOP 远程操作 Domino 服务器》
3 :《通过 JAVA-CORBA 访问 Domino 》
4 :《 LotusNotes 和 Eclipse 管理和运行 Java 程序》