Lotus notes从浏览器实现自动化

Lotus notes automation from browser

本文关键字:实现 自动化 浏览器 notes Lotus      更新时间:2023-09-26

我一直在尝试从浏览器界面自动填充Lotus Notes邮件。

在参考Richard Schwartz的答案后,我使用Lotus.NotesSession类编写了这段代码。

function SendScriptMail() {
            var mToMail = document.getElementById('txtMailId').value
            var mSub = document.getElementById('txtSubject').value
            var mMsg = document.getElementById('txtContent').value
            var Password = "yyy"
alert("1");
            var MailFileServer = "xxx.com"
            var MailFile = "C:'Program Files'IBM'Lotus'Notes'mail'user.nsf"
alert("2")
            var Session;
            var Maildb;
            var UI;
            var NewMail;
            var From = "user@xxx.com"
            try {
alert("3")
                // Create the Activex object for NotesSession
                Session = new ActiveXObject("Lotus.NotesSession");
alert("4")
                if (Session == null) {
                    throw ("NoSession");
                } else {
                    Session.Initialize(Password);
                    // Get mail database
                    Maildb = Session.GetDatabase(MailFileServer, MailFile);
alert("5")
                    if (Maildb == null) {
                        throw ("NoMaildb");
                    } else {
                        NewMail = MailDB.CreateDocument();
                        if (MailDoc == null) {
                            throw ('NoMailDoc');
                        } else {
                            // Populate the fields
                            NewMail.AppendItemValue("Form", "Memo")
                            NewMail.AppendItemValue("SendTo", mToMail)
                            NewMail.AppendItemValue("From", From)
                            NewMail.AppendItemValue("Subject", mSub)
                            NewMail.AppendItemValue("Body", mMsg)
                            NewMail.Save(True, False)
                            NewMail.Send(False)
                        }
                    }
                }
            } catch (err) {
                // feel free to improve error handling...
                alert('Error while sending mail');
            }
        }

但现在,警报1,2,3被触发,然后计数器移动到catch块。lotus notes会话未启动。

在我之前看到的powershell脚本中,有一个代码regsvr32 "$NotesInstallDir'nlsxbe.dll" /sSession = new ActiveXObject("Lotus.NotesSession");之前使用。javascript中也有类似的东西吗?如果有,我该如何调用dll。

我想我已经意识到我错在哪里了。根据我的说法,在alert("5")之前一切都很好。但是由于Lotus.NotesSession没有CreateDocument()方法,它抛出了错误。不过,我不知道如何创建文档和填充值。

由于您选择使用Notes.NotesUIWorkspace类,因此您正在使用Notes客户端前端。它正在运行,您的用户可以在屏幕上看到正在发生的事情。您是否知道有一组后端类(植根于Lotus.NotesSession,而不是Notes.NotesSessionNotes.NotesUIWorkspace)可以直接处理Notes数据库数据,而不会导致Notes客户端获取焦点并显示您正在做的一切?

使用前端意味着在某些情况下(取决于您使用的Notes版本),您将不会直接使用Notes消息中存储的和在后端看到的标准字段名。您将使用在用于查看和编辑消息的表单中用作临时输入的名称。您可以使用Domino Designer查看Memo表单来查看这些名称

不要使用"SendTo",请尝试使用:

MailDoc.Fieldsettext('EnterSendTo', mToMail)

关于身体领域,不涉及临时领域,但你还没有真正解释你所面临的困难。你不知道如何在浏览器中显示你想要的界面吗?你不知道如何将不同的输入组合成一个FieldSetText调用吗?还是你只是对FieldSetText不能进行任何花哨的格式化感到不满?在后一种情况下,为了获得更多的格式化功能,您可能需要切换到使用后端类,这样您就可以访问具有更多格式化功能的NotesRichTextItem类。