这是我想要做的:添加一个特殊按钮以将文件附加到 Notes“新消息”窗口。如果使用此按钮附加文件,则在发送电子邮件时,应将它们上传到服务器并将指向它们的链接添加到电子邮件中。
我的问题 - 是否有可能(以及如何)在 Lotus Notus 的插件中捕获“发送邮件”事件?
这是我想要做的:添加一个特殊按钮以将文件附加到 Notes“新消息”窗口。如果使用此按钮附加文件,则在发送电子邮件时,应将它们上传到服务器并将指向它们的链接添加到电子邮件中。
我的问题 - 是否有可能(以及如何)在 Lotus Notus 的插件中捕获“发送邮件”事件?
我不知道 Eclipse 插件如何做到这一点。此外,由于 Notes 可以离线使用——当不可能将文件上传到服务器时——最好让运行在 Domino 服务器上的代码截获邮件消息并执行上传。
大多数在服务器上挂钩邮件操作的产品使用 Lotus Notes C API 的扩展管理器函数来挂钩 EM_NSFNOTEUPDATE 事件的 EM_BEFORE 通知,并检查 NSFNoteUpdate 操作是否发生在服务器的 mail.box 文件中,然后检查邮件是否需要特殊处理(即,在您的情况下,将通过查找您的按钮代码已插入到消息中的特殊 NotesItem)。通常的编码方法是立即更改消息的状态以将其暂停,防止 Domino 路由器在您的代码仍在处理消息时尝试发送消息。许多产品实际上有两个组件 - EM 挂钩 DLL 和一个单独的服务器任务,它接收来自挂钩 DLL 的信号,处理消息,然后将其从保持状态释放。这种方法可以防止您的代码在处理大文件时占用路由器线程。
(注意:较新版本的 Domino 服务器能够使用用 Java 编写的 OSGI 插件,而不是使用 Notes C API 进行此类操作。我还没有研究过这对于处理邮件消息的操作可能如何工作的详细信息. )
我有点想通了。8.5 中提供了一个非常好的扩展点 - “com.ibm.notes.mailsend.MailSendAttachmentsDialog”,专门用于自定义处理附件。您可以在 plugin.xml 中的 IBM\Lotus\Notes\framework\shared\eclipse\plugins\com.ibm.notes.mailsend_8.5 中看到它。* .jar。
唯一的问题是 - 它只处理附件而无法访问其他任何内容。因此,如果有人想出如何从那里获取主题行和消息文本,请回复。
更新:明白了。
NotesUIElement elem = (new NotesUIWorkspace()).getCurrentElement();
if (elem instanceof NotesUIDocument) {
NotesUIDocument doc = ((NotesUIDocument) elem);
String to = doc.getField("EnterSendTo").getText();
String cc = doc.getField("EnterCopyTo").getText();
String bcc = doc.getField("EnterBlindCopyTo").getText();
String subject = doc.getField("Subject").getText();
String body = doc.getField("Body").getText();
....
}