nsf文件

时间:2017-06-28 06:20:41

标签: java vba lotus-notes lotus-domino

我正在开发一个Java程序,通过lotus notes客户端发送带附件的电子邮件。一位同事给了我一个能够完成这项任务的vba脚本来定位自己。该脚本如下:

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)

像魔术一样,这会成功打开本地笔记数据库文件,我可以发送电子邮件。现在我尝试使用Lotus Notes API“Notes.jar”在Java中复制它:

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

如果我给getDatabase方法指定nsf文件的确切路径,它就像一个魅力,但是它给它提供了与vba脚本中的MailDbName相同的值,它不起作用。我的问题是这是如何在vba中工作而不是在Java中工作?为getDatabase方法提供准确的路径不会在除我自己的设备之外的任何其他设备上运行。那么如何才能在任何设备上运行?

非常感谢!

1 个答案:

答案 0 :(得分:1)

如果您有本地邮件文件副本,它通常位于Notes / Data目录中,该目录被视为Notes的根目录。 这就是它在第一个例子中打开的原因。 在第二个示例中,它听起来像您尝试打开的数据库位于Notes / Data目录中的文件夹中,这可能就是它无法正常工作的原因。

通常,当您要打开邮件数据库时,如果您使用Java和Lotusscript中的NotesDatabase类的OpenMail方法,则使用DbDirectory类的openMailDatabase方法。