2009-10-22 5 views
4

Je souhaite utiliser l'API Java (Notes.jar) et j'exécute une boîte Windows avec Lotus Notes 8.5 installé.Extraction de messages électroniques à partir d'un fichier Lotus Notes NSF à l'aide de l'API Java

Je ne connais rien à Lotus Notes, et je n'ai qu'une petite tâche à accomplir: extraire les courriels d'un fichier NSF. Je veux être en mesure de parcourir tous les messages électroniques, récupérer les métadonnées (De, À, Cc, etc) ou le MIME brut si disponible.

J'ai parcouru un peu partout, mais je n'ai rien trouvé de simple sans avoir besoin d'une expertise significative du domaine Lotus Notes.

Un exemple de code pour me lancer serait grandement apprécié. Merci!

MISE À JOUR: J'ai trouvé un projet open source qui fait cela en Python:

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

Cependant, toujours à la recherche d'une façon de le faire en Java.

Répondre

7

Vous pouvez écrire une application Java simple qui gère la base de données de messagerie qui vous intéresse, puis obtient un handle pour une vue standard dans cette base de données, puis effectue une itération sur les documents de la vue. Voici quelques exemples de code (brut):

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

La méthode getItemValueString obtient une valeur "champ" donné. D'autres champs importants sur un document de courrier sont: De, SendTo, CopyTo, BlindCopyTo, Objet, Corps et DeliveredDate. Notez que Body est un élément "texte enrichi" de Notes, et getItemValueString renverra la partie texte seulement. DeliveredDate est un élément NotesDate et vous devez utiliser la méthode getItemValueDateTimeArray pour cela.

-1

Pour les chercheurs futurs Dans Linux ou Windows, vous pouvez gérer pour lire le fichier NSF en texte brut

Exemple d'utilisation en utilisant la commande des chaînes:

strings file.nsf 

Bien sûr, vous pouvez ouvrir le fichier en mode binaire dans votre langage préferé et analyser la sortie

Remarque: N'a pas besoin d'IBM Lotus Notes ou de Domino.

Questions connexes