如何编写 IBM (Lotus) Notes 客户端?

How Do I write an IBM (Lotus) Notes Client?

我想编写一个统一的电子邮件和消息传递程序。支持 IMAP、POP 和 SMTP 都非常容易 - 这些协议都有详细的文档记录并且很容易获得。

Exchange 有一个 SOAP API 记录 here,您可以通过它编写一个与 Exchange 服务器通信的 Exchange 客户端。

我正在寻找 IBM (Lotus) Notes 使用的协议以及如何编写可以发送和接收邮件的独立应用程序。 (独立是其中的关键部分 - 我已经看到了关于自动化现有客户端的各种事情,但我正在寻找编写一个新客户端,所以我需要知道它使用什么协议。)

此时语言对我来说并不重要。我倾向于 Python 这个项目,但我仍处于探索阶段,我试图确定任何语言中存在哪些框架来帮助我编写这个。

这是一个非常有趣的话题!我能想到有两种方法提供面向邮件的抽象,还有两种允许您直接访问邮件文件作为数据库。

首先,这很可能是权宜之计,Domino 支持 IMAP。它远非完美,也不太可能改进,但它或多或少地为邮件访问做了一些工作。并非每台服务器都默认启用它,但管理员这样做并不是非常困难或不寻常。

最近,Extension Library 添加了一个基于 JSON 的邮件服务,据称可以为许多操作提供相当友好的 API,但并不完整 - 例如,它似乎没有涵盖用户的自定义视图或文件夹。

根据项目的深度,还有使用Domino的数据库访问服务器的路由API,这将是最灵活的,但会涉及更多的障碍。

核心协议是 NRPC,据我所知,它只在核心 Notes 库中实现。正如 Stan 所说,它与 ID 文件(服务器或用户)的存在密切相关,并将其用于加密。通过一些设置,您可以拥有该库和 ID,然后在它支持的平台上使用 C 函数和结构。此路线将为您提供最多的功能(有许多 C 级函数可帮助在 Notes 的文档表示和 MIME 之间进行转换)。

或者,有一个名为 DIIOP 的远程访问协议,可用于使用 UN/password 凭据通过 Java 对象访问远程 Domino 服务器。并非每台服务器都启用此功能,但并不罕见,而且启用起来也不难。您无法访问 C API 的所有边缘情况功能,但这将涵盖很多领域。

如果您想在 Python 中工作,并且愿意将自己限制在最新版本的 Lotus Domino 服务器上,那么我认为您应该考虑使用 REST API 即所谓的 Donmino 数据服务。这是一些 on-line documentation.