开发者

Extracting email messages from a Lotus Notes NSF file using Java API

开发者 https://www.devze.com 2022-12-09 09:40 出处:网络
I\'d like to use the Java API (Notes.jar), and I\'m running a Windows box with Lotus Notes 8.5 installed.

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 开发者_如何学CNSF 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.


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.


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.

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号