如何通过编程方式在电子邮件中发送lotusscript?

时间:2013-01-28 22:23:00

标签: java lotus-notes lotusscript

我正在尝试以编程方式从Web应用程序(Java EE)生成lotusscript(以脚本化按钮的形式),并将其发送给最终用户,然后最终用户将在他/她的Lotus Notes客户端中运行它。

我怎样才能做到这一点?我是否有一个API用于将lotusscript嵌入电子邮件中?

3 个答案:

答案 0 :(得分:3)

这是一个想法。我没有尝试过,也不确定它会起作用:

  1. 在Domino Designer中使用LotusScript按钮创建表单并设置为存储在文档中
  2. 使用该表单创建文档
  3. 将文档导出为DXL(Domino XML)
  4. 在Java EE应用程序中使用 ncso.jar 导入DXL(您可以根据需要首先在XML中修改LotusScript)
  5. 使用Document.send()通过电子邮件发送文档。当使用CORBA / IIOP连接到Domino服务器时,我认为这应该可行。
  6. <强>更新

    您可以跳过DXL部分,只需修改文档项中的LotusScript即可。我知道您必须为每个收件人修改LotusScript。如果没有,那么一切都变得容易了(参见Richards的回答)。

答案 1 :(得分:3)

我不会尝试嵌入按钮,而是考虑利用Notes中“存储的文档形式”功能。

即,使用Domino Designer我会手动创建一个数据库(为方便起见,我称之为“MyDb.nsf”)。在此数据库中创建一个表单(为方便起见,“MyForm”)并使用电子邮件的必填字段(SendTo,Subject,Body等)进行设置。然后在表单上创建一个按钮并输入LotusScript代码。

事先完成此操作,您的代码可以利用Document.send()方法中的可选attachForm参数。

你要做的是以通常的方式打开MyDb.nsf,然后使用Database.createDocument()在该数据库中创建文档,然后使用Document.ReplaceItemValue("Form","MyForm")将此文档绑定到表单。还可以根据需要设置其他项目(例如,Subject,SendTo,Body),并在完成所有操作后调用Document.send(true)。这会将您的表单嵌入到文档中并发送它,因此LotusScript代码将以随消息一起发送的嵌入式表单传播。

我认为这对你来说可能是最好的方法,因为我认为这会在嵌入时保留表单上的签名。我不确定,但另一方面,我更确定使用CORBA / IIOP发送任何其他方式都会给你一个未签名的脚本(因为CORBA / IIOP无法访问签名所需的私钥文件)。未签名的脚本将意味着您的用户在执行时会收到ECL警告 - 这可能导致他们在ECL中添加一个条目以允许未签名的脚本,这是一种糟糕的安全措施。

答案 2 :(得分:1)

另一种选择是嵌入一个URL,用QueryOpen中的代码(或对代理的调用)打开一个Page设计元素,以便在页面打开时运行。

Notes://myserver.mycompany.com/utilities.nsf/MyTaskLauncher?OpenPage

我不确定它是否可以传递参数值,或者您是否必须依赖用户的凭据来确定正确的信息。

优点:

  1. 代码驻留在一个位置,所以如果我找到它,我可以更新它 是原始版本中的错误。
  2. 使用存储的表单最小化操作用户的邮件文件。
  3. 较小的电子邮件消息,因为我不需要发送表单 信息。
  4. 在Java EE中构建简单的字符串比在更高级别的字符串中更容易 的解决方案。
  5. 代理可以使用签名ID,也可以与用户一起运行 凭证。
  6. 只要收件人有Notes客户端,就可以发送到任何电子邮件地址。