Email 如何挂钩&x27;发送电子邮件';IBM Lotus Notes的应用

Email 如何挂钩&x27;发送电子邮件';IBM Lotus Notes的应用,email,lotus-notes,Email,Lotus Notes,我正在为IBMLotusNotes开发一个插件。我需要在用户点击“发送电子邮件”按钮之后,在电子邮件实际发送之前,立即更改电子邮件的内容。我搜索了LotusNotes的API,但找不到解决方法。文件夹/opt/ibm/lotus/notes/framework/shared/eclipse/plugins中有一个名为com.ibm.notes.mailsend的库。但我在互联网上找不到任何与此相关的文档,也不知道如何捕捉有关发送电子邮件的事件。有人知道如何实现我需要的功能吗?谢谢 更新:谢谢Ri

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


更新:谢谢Richard。基本上,我已经知道如何连接电子邮件发送。但我还需要做一个选项,用户可以为每个电子邮件设置不同的选项。据我所知,被称为“消息”的电子邮件在发送之前存储在邮件文件数据库中。如何在邮件中添加标志?谢谢。

在Lotus Notes中钩住事件的方法是使用Notes C API的扩展管理器例程。挂接邮件发送操作的一般策略是在EM_nsfnoteUpdateEmailBox上设置一个钩子。这可以在Notes客户机或Domino服务器上完成。在服务器端,如果您的处理非常繁琐,那么如果您试图在钩子中完成所有工作,您将面临减慢Domino速度的风险,因此大多数人采用的策略是让钩子代码将消息的状态更改为“保留”,然后发信号通知一个单独的服务器任务来接管工作。通过这种方式,钩子可以返回,单独的服务器任务可以在重置消息状态之前花费所需的任何时间,以便正常路由将接管。您可以找到文档

仅对于服务器端处理,有两个选项允许您用Java而不是C编写代码。一个是名为的OpenNTF项目,允许您编写Java代理,在触发某些样板钩子代码时触发,另一个是的OpenNTF版本(又名DOTS),它允许启动任务集以响应EM事件。注意,Domino9“SocialEdition”中提供了一个IBM支持的DOTS版本,但我的理解是它不包括EM事件支持

已更新请求的其他信息…


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

非常感谢您的回复!它回答了我的大部分问题。虽然我更进一步,但还是有点棘手。剩下的问题是,我希望我的客户能够决定是否修改他们的电子邮件。如果我只在domino服务器中挂接,如何捕获特定邮件程序的设置?或者我也应该挂接Notes客户端,将设置与电子邮件一起发送到domino?你能和我分享一些技巧来钩住Notes客户端捕捉电子邮件发送事件吗?非常感谢!Stackoverflow不鼓励在关于附加问题的长时间讨论中使用注释线程。另外,我不确定您是否询问用户应用于其所有emal的设置,或者询问用户可能为每个emai设置不同的选项。不管怎样,有许多不同的方法来解决这些可能性中的任何一种。这不是应该以这种方式解决的问题。如果你仍然认为我的回答是很棒的,你可以考虑接受和接受。我真的很抱歉,李察。这是我第一次问关于Stackoverflow的问题,虽然我用它搜索了很长时间。。。我不确定这样做是否合适,但我只是更新了我的问题。请你也给我一些建议好吗?谢谢。真正正确的方法应该是打开一个新的问题,并包括一个指向这个问题的链接,表明这是一个后续问题,但我已经在这里为您更新了我的答案。请记住,有很多方法可以做到这一点。我刚推荐了一个。谢谢你,理查德。我发布了另一条与此问题密切相关的帖子:。如果你能在那里给我一些建议,我会非常感激。谢谢