Extracting email messages from a Lotus Notes NSF file using Java API
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.
精彩评论