使用Java API从Lotus Notes NSF文件提取电子邮件

使用Java API从Lotus Notes NSF文件提取电子邮件,java,lotus-notes,Java,Lotus Notes,我想使用JavaAPI(Notes.jar),我正在运行一个安装了LotusNotes8.5的WindowsBox 我对lotusnotes一无所知,只需要完成一项狭义的任务:从NSF文件中提取电子邮件消息。我希望能够遍历所有电子邮件,获取元数据(从、到、抄送等)或原始MIME(如果可用) 我在谷歌上搜索了很多次,但如果不需要一些重要的LotusNotes领域专业知识,我还没有找到任何简单的方法 一些示例代码,让我开始将不胜感激。谢谢 更新:我发现了一个在Python中实现此功能的开源项目:

我想使用JavaAPI(Notes.jar),我正在运行一个安装了LotusNotes8.5的WindowsBox

我对lotusnotes一无所知,只需要完成一项狭义的任务:从NSF文件中提取电子邮件消息。我希望能够遍历所有电子邮件,获取元数据(从、到、抄送等)或原始MIME(如果可用)

我在谷歌上搜索了很多次,但如果不需要一些重要的LotusNotes领域专业知识,我还没有找到任何简单的方法

一些示例代码,让我开始将不胜感激。谢谢

更新:我发现了一个在Python中实现此功能的开源项目:


但是,仍在寻找一种在Java中实现这一点的方法。

您可以编写一个简单的Java应用程序,它获取您感兴趣的邮件数据库的句柄,然后获取该数据库中标准视图的句柄,然后在视图中迭代文档。以下是一些(粗略的)示例代码:

import lotus.domino.*;
public class sample extends NotesThread
{
  public static void main(String argv[])
    {
        sample mySample = new sample();
        mySample.start();
    }
  public void runNotes()
    {
    try
      {
        Session s = NotesFactory.createSession();
        Database db = s.getDatabase ("Server", "pathToMailDB.nsf");
        View vw = db.getView ("By Person");  // this view exists in r8 mail template; may need to change for earlier versions
        Document doc = vw.getFirstDocument();
        while (doc != null) {               
            System.out.println (doc.getItemValueString("Subject"));
            doc = vw.getNextDocument(doc);
        }
      }
    catch (Exception e)
      {
        e.printStackTrace();
      }
    }
}
getItemValueString
方法获取给定的“字段”值。邮件文档上的其他重要字段有:发件人、发送人、抄送人、盲抄送人、主题、正文和交付日期。注意,Body是一个Notes“富文本”项,
getItemValueString
将返回纯文本部分。DeliveredDate是一个NotesDate项目,您需要使用
getItemValueDateTimeArray
方法来实现此目的。

供将来的搜索者使用 在Linux或Windows中,您可以设法以纯文本形式读取NSF文件

使用字符串命令的示例用法:

strings file.nsf
当然,您可以使用首选语言以二进制模式打开文件并解析输出

注: 不需要IBM Lotus Notes或Domino