【问题标题】:Lotus Domino ScriptLotus Domino 脚本
【发布时间】:2012-05-12 03:55:43
【问题描述】:

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

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

我的问题:

  1. Lo​​tus Domino/Notes 是否也能做到这一点
  2. 如果有的话,我应该对以上哪一项进行更多研究?如果没有,我最好使用什么?

谢谢

编辑:

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

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

【问题讨论】:

  • 您能否详细说明您的服务如何收到新邮件通知?您是否通过 Web 服务轮询 Exchange 邮箱?

标签: lotus-notes lotus-domino lotusscript


【解决方案1】:

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

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

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 之外执行其他操作。

【讨论】:

  • 感谢您的回复。请看编辑,我认为它应该解释为什么我需要实现一个单独的应用程序。
  • 您仍然可以使用第 2 点将该数据发送到您的 REST 服务。如果您必须使用外部路由,您可以使用 Notes Java API、C-API 或 COM(通过 Notes)。
【解决方案2】:

您可以在 Domino 中使用 LotusScript 或 Java 代理 consume web services 和发出 POST 请求(LotusScript/WindowsJava)。

编辑:

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

【讨论】:

    【解决方案3】:

    如果邮件文件位于 Notes/Domino 本身中,那将是最简单的。如果是这样,您只需设置一个代理,该代理将在该邮件文件中收到新邮件时运行,该邮件文件会向其他用户生成消息。在单独的 Notes 环境中执行此操作将是小菜一碟。

    【讨论】:

    • 我不能让它在客户端,因为它是一个组织范围的脚本,即使客户的 Notes 被关闭,它也必须运行。我更想拦截消息然后做一些额外的事情
    • 这可以在服务器端完成,使用标记为运行“新邮件到达时”的 LotusScript 代理,如上面西蒙的回答中所述。
    • 没错。不需要客户端。哎呀,数据库甚至不需要是“邮件文件”,只需一个被列为邮件数据库的数据库。我已经这样做了很多次,而且非常简单。这是 Notes 中数据库与邮件系统集成的一大优势。
    【解决方案4】:

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

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

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

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

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

    【讨论】:

      猜你喜欢
      • 2013-04-18
      • 2019-01-07
      • 2020-07-26
      • 1970-01-01
      • 1970-01-01
      • 2013-08-11
      • 2013-02-05
      • 1970-01-01
      • 2015-03-18
      相关资源
      最近更新 更多