如何用java远程访问Domino邮箱数据2

遍历邮箱数据库的所有 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 程序》

你可能感兴趣的:(java,eclipse,应用服务器,浏览器,Lotus)