0

我最近编写了一个 Windows 服务,它使用 Exchange Web 服务来监听特定邮箱,然后当该邮箱收到新消息时,应用程序会向一组完全不同的用户发送电子邮件。我通过订阅服务做到了这一点,以便可以不断地运行。

除了将它与 Lotus Domino/Notes 集成之外,我想重新创建这个应用程序。我做了一些研究,并且知道 Lotus C API(可能)以及 Lotus Domino Designer(这似乎不是我想要的)和 LotusScript(可能)。

我的问题:

  1. 这甚至可以使用 Lotus Domino/Notes
  2. 如果有的话,我应该对以上哪一项进行更多研究?如果没有,我最好使用什么?

谢谢

编辑:

我忘了补充一点,在收到消息后,应用程序还会解析收到的电子邮件以提取正文和收件人,并将 POST 消息发送到运行 REST 服务的单独服务器。

上述功能是我第一次不只是在 Exchange 中设置规则的原因

4

4 回答 4

3

收听特定邮箱,然后当该邮箱收到新消息时,应用程序将电子邮件发送给完全不同的一组用户。

有多种方法可以做到这一点。

1.邮件文件中的邮件规则。

http://publib.boulder.ibm.com/infocenter/domhelp/v8r0/topic/com.ibm.notes.help.doc/DOC/H_USING_RULES_TO_FILTER_NEW_MESSAGES_STEPS.html

2. 在邮件文件中创建一个响应“新邮件到达时”的代理并对其进行编码(Java / LotusScript / SimpleAgent)。

http://publib.boulder.ibm.com/infocenter/domhelp/v8r0/topic/com.ibm.designer.domino.main.doc/H_WRITING_SCRIPTS_AND_FORMULAS_FOR_AGENTS.html

3.服务器邮件规则(我没玩过,最好在ServerAdmin上问)。

http://publib.boulder.ibm.com/infocenter/domhelp/v8r0/topic/com.ibm.help.domino.admin.doc/DOC/H_FILTERING_OUT_UNWANTED_EMAIL_OVER.html

拥有一个单独的应用程序来监视邮箱似乎有点愚蠢,除非该应用程序需要在 Domino 之外执行其他操作。

于 2012-05-02T16:36:32.010 回答
2

您可以使用Domino 中的 LotusScript 或 Java 代理来使用 Web 服务并发出 POST 请求(LotusScript/WindowsJava )。

编辑:

我假设您想要/需要将邮箱留在 Exchange 中。如果不是这种情况,请使用其他任何建议,它们都很好。但如果它确实需要留在 Exchange 中,代理(无论是 LotusScript 还是 Java)比 C API 更容易创建和维护。

于 2012-05-02T17:42:51.110 回答
1

It would be easiest if the mail file were in Notes/Domino itself. If it were, you'd simply set up an agent that would run when new mail is received in that mail file that generates the message to the other users. Doing it in a solely Notes environment would be child's play.

于 2012-05-02T20:27:48.147 回答
0

根据正在进行的其他答案的问答,我相信您需要使用 Notes C API。特别是,您应该使用 API 的 Extension Manager 功能。我部分基于您在其中一个答案中使用“拦截”一词。要真正做到这一点,您需要做的是在 Domino 服务器的路由器邮箱文件中挂钩事件。但实际上,这有两个原因:

  • 这就是大多数合规性和安全产品倾向于在消息传递之前拦截它们的方式。

  • 要挂接的路由器邮箱文件总是比用户邮件文件少。因此,即使您没有在传递之前捕获消息的技术要求,集中而不是在许多用户邮箱中的许多代理之间分配工作仍然是一个更好的主意,或者在许多用户中自行挂钩传递邮箱。

此类事情的常用技术涉及一个占用空间小的 DLL,该 DLL 挂钩事件并将消息置于“等待”状态,然后向另一段作为服务器任务运行的代码发出信号。这样,路由器不会尝试处理消息的传递,直到您的代码完成了它需要做的所有事情(如果您在发布到 REST 服务时必须等待响应,这可能需要几个周期)。服务器任务也是使用 C API 编写的。(Java 也是服务器任务的一个潜在选择。IBM 有用 Java 编写的服务器任务,但是当我直截了当地询问此接口是否已记录并支持 3rd 时,我总是得到 IBM 员工的空白凝视党用!

现在,这是另一个想法。您已经拥有一个使用 Exchange Web 服务的 Windows 服务,并且其中包含您真正需要的所有逻辑。为什么要重复这个逻辑?Domino 支持部署您自己的 Web 服务,因此正确的方法可能是使用扩展管理器将消息“搁置”,但您可以创建一个 Domino Web 服务来传递,而不是由服务器任务进行处理数据返回到您的 Windows 服务,与您已经用于与 Exchange 对话的界面非常相似。我不熟悉 Exchange Web 服务,也不知道您如何使用它来让您的 Windows 服务“监听”,所以我不确定这是否真的可以使用 Domino 的 Web 服务概念。也许你可能不得不“投票” 而不是听。无论如何,这只是一个想法。

于 2012-05-02T23:19:25.533 回答