我正在为IBM Lotus Notes创建一个插件。在实际发送电子邮件之前,我需要在用户点击“发送电子邮件”按钮后立即更改电子邮件的内容。我搜索过Lotus Notes的API但找不到解决方法。在/ opt / ibm / lotus / notes / framework / shared / eclipse / plugins文件夹中有一个名为com.ibm.notes.mailsend的库。但我在互联网上找不到任何与之相关的文档,也不知道如何捕获有关发送电子邮件的事件。有谁知道如何实现我需要的功能?感谢。
更新:谢谢理查德。基本上我已经弄清楚如何挂钩电子邮件发送。但我还需要提供一个选项,用户可以为每个电子邮件设置不同的选项。根据我的理解,称为消息的电子邮件在发送之前存储在邮件文件数据库中。如何在邮件中添加“标记”?感谢。
答案 0 :(得分:2)
在Lotus Notes中挂钩事件的方法是使用Notes C API的Extension Manager例程。挂钩邮件发送操作的一般策略是在EM_NSFNoteUpdateMailbox上设置挂钩。这可以在Notes客户机或Domino服务器上完成。在服务器端,如果您的处理非常重要,那么如果您尝试在钩子中完成所有工作,则可能会降低Domino的速度,因此大多数人采用的策略是让钩子代码更改状态消息到"暂停"然后发出单独的服务器任务信号以接管工作。这样钩子就可以返回,并且单独的服务器任务可以在重置消息状态之前花费任何时间,以便正常路由接管。您可以找到文档here。
仅对于服务器端处理,有两个选项允许您用Java而不是C编写代码。一个是名为TriggerHappy的OpenNTF项目,它允许您编写在以下情况下触发的Java代理触发了一些样板钩子代码,另一个是Domino OSGi Tasklet Service(又称DOTS)的OpenNTF版本,它允许在响应EM事件时触发任务。请注意,Domino 9" Social Edition"中提供了IBM支持的DOTS版本,但我的理解是它不包含EM事件支持。
更新了所需的其他信息......
为了在钩子中运行的代码可以读取的每条消息中添加一个标志,您需要修改用户使用的邮件模板。邮件文件。您需要Domino系统管理员的许可才能做到这一点,并且直言不讳:这不是Domino管理员喜欢做的事情,因为它在升级Domino版本时使他们的工作更加困难。有许多方法可以修改模板,但所有这些方法都是为消息添加一个新的隐藏字段,作为钩子代码的标志。如果该字段存在,您的代码将对您需要的内容进行更改,否则将使内容保持不变。一种可能的方法是添加一个包含公式的共享操作来设置隐藏字段(该公式类似于FIELD myFlagFieldName := "1";
),然后您可以将该共享操作添加到备注表单中。用户可以在他们想要触发代码的任何时候按下操作按钮。管理员需要维护包含您的共享操作的备份数据库,并在每次升级后将其重新添加到邮件模板,然后将其重新添加到新模板版本的备忘录表单中。当然还有其他一些方法,一些对用户更友好,但管理员更难处理,而反之亦然。