我一直在尝试从浏览器界面自动化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区块。莲花笔记会议尚未开始。
在我之前看过的powershell脚本中,有regsvr32 "$NotesInstallDir\nlsxbe.dll" /s
之前使用过的代码Session = new ActiveXObject("Lotus.NotesSession");
。在javascript中是否有类似的东西,如果是这样,我如何调用该DLL。
我想我已经意识到自己哪里出错了。据我所知,事情是好的alert("5")
。但由于Lotus.NotesSession
没有CreateDocument()
方法,因此它会抛出错误。我不知道如何创建文档并填充值。
答案 0 :(得分:1)
由于您已选择使用Notes.NotesUIWorkspace类,因此您正在使用Notes客户端前端。它正在运行,您的用户会看到屏幕上发生了什么。您是否知道有一组后端类(根据Lotus.NotesSession
而不是Notes.NotesSession
和Notes.NotesUIWorkspace
)直接使用Notes数据库数据,而不会导致Notes客户端抓取关注并展示你正在做的一切?
使用前端意味着在某些情况下(取决于您正在使用的Notes的版本),您不会直接使用Notes消息中标准的字段名称,如存储和在后端看到。您将使用用于查看和编辑消息的表单中用作临时输入的名称。您可以使用Domino Designer查看这些名称以查看备注表单。
请尝试使用:
,而不是使用“SendTo” MailDoc.Fieldsettext('EnterSendTo', mToMail)
关于Body字段,没有涉及临时字段,但是您没有真正解释过您遇到的困难。你不知道如何在浏览器中显示你想要的界面吗?你不知道如何将不同的输入组合成一个FieldSetText
电话吗?或者您是否对FieldSetText
无法进行任何花哨格式化这一事实感到不满?在后一种情况下,为了获得更多的格式化功能,您可能希望切换到使用后端类,这使您可以访问具有更多格式化功能的NotesRichTextItem
类。