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

发布于 2024-08-08 13:55:53 字数 463 浏览 2 评论 0原文

我想使用 Java API (Notes.jar),并且正在运行安装了 Lotus Notes 8.5 的 Windows 机器。

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

我在 google 上搜索了很多,但没有找到任何不需要一些重要的 Lotus Notes 领域专业知识的简单方法。

一些帮助我入门的示例代码将不胜感激。谢谢!

更新:我发现一个开源项目可以在Python中执行此操作:

http://code.google.com/ p/nlconverter/

但是,仍在寻找一种在 Java 中执行此操作的方法。

I'd like to use the Java API (Notes.jar), and I'm running a Windows box with Lotus Notes 8.5 installed.

I know nothing about Lotus Notes, and I only need to do this one narrow task: extracting email messages from an NSF file. I want to be able to iterate through all the email messages, grab the metadata (From, To, Cc, etc) or the raw MIME if available.

I've googled around quite a bit, but I haven't found anything straightforward without requiring some significant Lotus Notes domain expertise.

Some sample code to get me started would be greatly appreciated. Thanks!

UPDATE: I found an open source project that does this in Python:

http://code.google.com/p/nlconverter/

However, still looking for a way to do this in Java.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

誰ツ都不明白 2024-08-15 13:55:53

您可以编写一个简单的 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 方法获取给定的“字段”值。邮件文档中的其他重要字段有:From、SendTo、CopyTo、BlindCopyTo、Subject、Body 和 DeliveredDate。请注意,Body 是 Notes“富文本”项目,并且 getItemValueString 将返回纯文本部分。 DeliveredDate 是一个 NotesDate 项目,您需要使用 getItemValueDateTimeArray 方法来实现它。

You can write a simple Java app which gets a handle to the mail database you are interested in, then gets a handle to a standard view in that database, and then iterates over the documents in the view. Here is some (rough) sample code:

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();
      }
    }
}

The getItemValueString method gets a given "field" value. Other important fields on a mail document are: From, SendTo, CopyTo, BlindCopyTo, Subject, Body and DeliveredDate. Note that Body is a Notes "rich text" item, and getItemValueString will return the text-only portion. DeliveredDate is a NotesDate item, and you would need to use the getItemValueDateTimeArray method for that.

薔薇婲 2024-08-15 13:55:53

对于未来的搜索者
在 Linux 或 Windows 中,您可以设法以纯文本形式读取 NSF 文件

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

strings file.nsf

当然,您可以使用您喜欢的语言以二进制模式打开文件并解析输出

注意:
不需要 IBM Lotus Notes 或 Domino。

For future searchers
In Linux or Windows you can manage to read the NSF file as plain text

Example usage using strings command:

strings file.nsf

Of course you can open the file in binary mode in your preffered language and parse the output

Note:
Doesn't need IBM Lotus Notes or Domino.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文