如何挂钩 IBM Lotus Notes 'send email'

How to hook 'send email' of IBM Lotus Notes

我正在为 IBM Lotus Notes 开发一个插件。我需要在用户单击 'send email' 按钮后,在实际发送电子邮件之前立即更改电子邮件的内容。我搜索了 Lotus Notes 的 API,但找不到解决方法。文件夹 /opt/ibm/lotus/notes/framework/shared/eclipse/plugins 中有一个名为 com.ibm.notes.mailsend 的库。但是我在互联网上找不到任何相关的文档,也不知道如何捕获发送电子邮件的事件。有谁知道如何实现我需要的功能?谢谢

更新:谢谢理查德。基本上我已经想出了如何挂钩电子邮件发送。但我还需要做一个选项,用户可以为每封电子邮件设置不同的选项。据我了解,称为消息的电子邮件在发送之前存储在邮件文件数据库中。如何给'add flag'留言?谢谢

在 Lotus Notes 中挂接事件的方法是使用 Notes C API 的扩展管理器例程。挂钩邮件发送操作的一般策略是在 EM_NSFNoteUpdateMailbox 上设置一个挂钩。这可以在 Notes 客户端或 Domino 服务器上完成。在服务器端,如果您的处理非常重要,那么如果您尝试在挂钩中完成所有工作,您 运行 就有降低 Domino 速度的风险,因此大多数人采用的策略是拥有挂钩代码将消息的状态更改为 "On Hold",然后向一个单独的服务器任务发送信号来接管工作。这样挂钩可以 return 并且单独的服务器任务可以在重置消息状态之前花费任何需要的时间,以便正常路由接管。您可以找到文档 here.

仅对于服务器端处理,有两个选项允许您使用 Java 而不是 C 编写代码。一个是名为 TriggerHappy that allows you to write Java Agents that are fired when some boilerplate hook code is triggered, and the other is the OpenNTF version of the Domino OSGi Tasklet Service(又名 DOTS)的 OpenNTF 项目,它允许 taskets 被触发以响应 EM 事件。请注意,在 Domino 9 "Social Edition" 中有一个 IBM 支持的 DOTS 版本,但我的理解是它不包括 EM 事件支持。

已更新以获取更多信息...

为了向挂钩中 运行 的代码可以读取的每封邮件添加一个标志,您需要修改用户邮件文件中使用的邮件模板。您需要获得 Domino 系统管理员的许可才能执行此操作,坦率地说:这不是 Domino 管理员喜欢做的事情,因为这会使他们在升级 Domino 版本时的工作更加困难。您可以通过多种方式修改模板,但所有这些方式的目的都是为消息添加一个新的隐藏字段,作为挂钩代码的标志。如果该字段存在,您的代码将对您需要的内容进行更改,否则它将保留该内容。一种可能的方法是添加包含公式的共享操作来设置隐藏字段(该公式类似于 FIELD myFlagFieldName := "1";),然后您可以将该共享操作添加到备忘录表单。用户可以在任何时候想要触发您的代码时按下操作按钮。管理员需要维护包含您的共享操作的备份数据库,并在每次升级后将其重新添加到邮件模板中,然后将其重新添加到新模板版本的备忘录表单中。当然还有其他方法,有些对用户更友好但管理员更难处理,反之亦然