2017-06-28 2 views
0

Je travaille sur un programme Java pour envoyer des emails avec des pièces jointes via le client Lotus notes. Un collègue m'a donné un script vba capable de cette tâche pour m'orienter. Le script suit:Java Lotus Notes API/VBA chemin d'accès au fichier nsf

Set Session = CreateObject("Notes.NotesSession") 
UserName = Session.UserName 
MailDbName = Left$(UserName, 1) & Right$(UserName, (Len(UserName) - InStr(1, UserName, " "))) & ".nsf" 
Set Maildb = Session.GetDatabase("", MailDbName) 

Comme par magie cela ouvre avec succès le fichier de base de données de notes locales et je suis en mesure d'envoyer des e-mails. Maintenant, j'ai essayé de reproduire ce en Java avec l'API Lotus Notes « Notes.jar »:

Session s = NotesFactory.createSession(); 
Database database = s.getDatabase("", "PATH TO NSF FILE"); 

Si je donne la méthode getDatabase le chemin exact du fichier nsf il fonctionne comme un charme, mais en lui donnant la même valeur en tant que MailDbName du script vba, cela ne fonctionne pas. Ma question est de savoir comment cela fonctionne dans vba mais pas en Java? Donner la méthode getDatabase le chemin exact ne fonctionne sur aucun autre périphérique sauf le mien. Alors, comment puis-je obtenir ce travail sur n'importe quel appareil?

Merci beaucoup!

+0

Veuillez montrer le code exact qui ne fonctionne pas. Ne nous fais pas deviner. C'est-à-dire, montrez-nous exactement comment vous lui donnez "la même valeur de MailDbName du script vba". Dites-nous également: sur quel ordinateur le script VBA est-il exécuté et comment est-il exécuté? et sur quelle machine est le code Java en cours d'exécution, et comment est-il exécuté? –

Répondre

1

Si vous avez une réplique mailfile locale, elle réside généralement dans le répertoire Notes/Data, qui est considéré comme le répertoire racine de Notes. C'est pourquoi il s'ouvre dans le premier exemple. Dans le deuxième exemple, il semble que la base de données que vous essayez d'ouvrir se trouve dans un dossier du répertoire Notes/Data, c'est probablement la raison pour laquelle cela ne fonctionne pas.

Normalement, lorsque vous souhaitez ouvrir une base courrier, vous utilisez la méthode openMailDatabase de la classe DbDirectory si vous utilisez Java et la méthode OpenMail des classes NotesDatabase de Lotusscript.

+0

Merci monsieur! L'utilisation des sessions getDbDirectory et openMailDatabase avec une chaîne vide en tant que paramètre a parfaitement fonctionné :) – Chrisser