2009-10-22 148 views
4

我想使用Java API(Notes.jar),並且正在運行安裝了Lotus Notes 8.5的Windows框。使用Java API從Lotus Notes NSF文件中提取電子郵件

我對Lotus Notes一無所知,而且我只需要做一個小任務:從NSF文件中提取電子郵件。我希望能夠遍歷所有電子郵件,獲取元數據(From,To,Cc等)或原始MIME(如果可用)。

我已經使用了相當多的東西,但是我沒有找到任何簡單的東西,而且不需要一些重要的Lotus Notes領域專業知識。

一些示例代碼讓我開始將不勝感激。謝謝!

更新:我發現一個開源項目,這是否在Python:

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

然而,仍然在尋找一種方式在Java中做到這一點。

回答

7

您可以編寫一個簡單的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方法。

-1

對於未來的搜索 在Linux或Windows,您可以管理使用字符串來讀取NSF文件爲純文本

用法示例命令:

strings file.nsf 

當然,你可以以二進制方式打開文件在您的預先設定的語言和解析輸出

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

相關問題