以下是我正在尝试执行的操作: 添加一个特殊按钮以将文件附加到Notes“新消息”窗口。如果使用此按钮附加了文件,则在发送电子邮件时,应将其上传到服务器,并将其链接添加到电子邮件中。如何在IBM Lotus notes插件中捕获“发送邮件”
我的问题是否有可能(以及如何)捕获Lotus Notus插件中的“发送邮件”事件?
以下是我正在尝试执行的操作: 添加一个特殊按钮以将文件附加到Notes“新消息”窗口。如果使用此按钮附加了文件,则在发送电子邮件时,应将其上传到服务器,并将其链接添加到电子邮件中。如何在IBM Lotus notes插件中捕获“发送邮件”
我的问题是否有可能(以及如何)捕获Lotus Notus插件中的“发送邮件”事件?
我有点想通了。 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();
....
}
我不知道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。我没有看到这些操作可能如何工作的细节处理邮件消息。)