关于Lotus Notes

Lotus Notes/Domino 是企业级通讯、协同工作及Internet/Intranet平台;内含强大的电子邮件功能,应用于企业办公自动化。

Lotus Notes结构

总的来讲,Lotus Notes 软件是C/S(客户端/服务器)架构的:客户端称为Notes,服务器端称为Domino;另外,部分新版本还提供Web服务,可通过浏览器访问服务器端Domino。

通常说的Lotus Notes软件,其实两部分:客户端Notes和服务器端Domino。

因此,部署Lotus Notes套件包括服务器端Domino的安装和配置,客户端Notes的安装和配置,后者相对简单,在此推荐本人验证过的服务器端Domino的部署教程给小白们(domino 8.51安装全步骤(图文教程) http://www.piikee.net/read.php/413.htm)。

Lotus Notes的邮件系统

Lotus Notes软件内含的邮件系统,服务器端Domino上部署邮件服务应用;Notes 工作站与 Domino 服务器之间或两个 Domino 服务器之间通信的基础为 NRPC(Notes 远程过程调用,也称Notes 路由协议)服务。关于NRPC,请参考:

http://darewinchip.com/help/help7_admin.nsf/2e73cbb2141acefa85256b8700688cea/b898e0382c11e6b04825706f0079637f?OpenDocument

或http://www-01.ibm.com/support/docview.wss?uid=swg21602698

也就是说,缺省情况下,Domino 服务器使用 NRPC与在其它Domino服务器或Notes工作站进行电子邮件/消息的通信。另外,也可配置Domino服务器,通过标准邮件通信协议如SMTP、POP3与其他服务器进行通信。

问题:向Notes的邮件系统内部发送邮件

问题描述:如何通过编写Java程序,以Notes的邮件系统内部某个用户的身份,向Notes的邮件系统的其他内部用户发送邮件/消息?

解决思路

  1.试试JavaMail

欲解决该问题,首先想到的Java的邮件服务接口JavaMail,但JavaMail只支持互联网标准邮件通信协议(mail systems based on internet standards such as MIME, SMTP, POP3, and IMAP,参加API:http://javamail.kenai.com/nonav/javadocs/index.html),显然,NRPC为IBM内部自定义的邮件通信协议,非标准的(而且貌似非公开的);因此,若Domino服务器配置为只能通过NRPC方式进行邮件通信(并不少见),则JavaMail无法解决该问题。

2. 试试客户端Notes

若是人工手动完成该过程,以内部用户身份发送邮件的操作接口是在客户端Notes,通过登录Notes客户端,完成身份校验后,即可在客户端编辑邮件并发送。因此,我们可以考虑在本地安装客户端Notes,编写Java程序与本地客户端Notes通信,并通过客户端Notes接口调用Domino发送邮件,前提是Lotus Notes 软件提供访问客户端Notes的API,事实上,该思路是可行的。

在IBM官网可以找到Java程序访问客户端Notes的资料和接口(请参考Lotus 官方文档架构师的文章:Java对Domino Objects的访问:

http://www.ibm.com/developerworks/cn/lotus/ls-java_access_pt1/index.html)

另外,文中提到第3条思路:Java程序可通过远程连接访问的 Domino 服务器,调用相关API完成邮件发送。

3. 远程连接

使用 CORBA请求 Domino服务器的IIOP服务,通过相关API,完成邮件发送。这种方式最方便,相比思路2,思路3不需要和本地的客户端Notes通信,直接和Domino服务器对话,因此不要求本地必须安装客户端Notes。

以下是文章(Java对Domino Objects的访问)针对该部分的摘要:

Java 对 Domino Objects 的访问是通过高级包 lotus.domino 进行的。根据运行时环境,这个包中的接口是在其他两个包中的一个包中实现的:

lotus.domino.local 提供了从同一计算机上的 Notes/Domino 软件进行调用。

lotus.domino.cso 提供了从通过远程连接访问的 Domino 服务器进行调用。

对于本地访问,Java 程序运行在安装有 Notes 客户机或者 Domino 服务器的计算机上。本地类由 JNI(Java Native Interface)构建来,用于访问与 JVM(Java Virtual Machine)相同的进程中的 Notes/Domino 二进制文件。

对于远程访问,Java 程序使用 CORBA(Common Object Request Broker Architecture)请求 Domino 服务器所提供的服务。远程类使用 CORBA 通过 TCP/IP 网络访问服务器。

官方发布的Domino对象的API文档:

http://publib.boulder.ibm.com/infocenter/domhelp/v8r0/index.jsp?topic=%2Fcom.ibm.designer.domino.main.doc%2FH_NOTESDOCUMENT_CLASS_JAVA.html

到此,该问题的解决办法已找到,可以根据需要选择思路2或3。

关于Java程序调用Lotus Notes邮件服务发送邮件的实现(一思路)相关推荐

  1. Java程序调用MATLAB接口

    Java程序调用MATLAB接口 文章目录 Java程序调用MATLAB接口 一.注意事项 二.环境安装 三.MATLAB如何生成JAR包 四.MATLAB生成的JAR包如何引入到Java程序中 五. ...

  2. java 采集rtsp_通过Java程序调用RTSP拉流协议视频平台EasyNVR程序接口步骤概览

    RTSP协议视频平台EasyNVR经过多年的积累,已经是一套成熟且完善的视频平台了,用户可以通过网页直接访问视频监控,也可以通过调用二次开发接口进行二次开发或者集成.下面介绍下Java程序调用Easy ...

  3. java调用easyxml接口_【技术教程】如何通过Java程序调用RTSP拉流协议视频平台EasyNVR程序接口?...

    原标题:[技术教程]如何通过Java程序调用RTSP拉流协议视频平台EasyNVR程序接口? RTSP协议视频平台EasyNVR经过多年的积累,已经是一套成熟且完善的视频平台了,用户可以通过网页直接访 ...

  4. java程序调用Oracle 存储过程 获取返回值(无返回,非结果集,结果集)

    oracle中procedure是不能有返回值的,要想返回值,就得有输出参数,同样要想返回记录集,可以把游标类型作为输出参数. 下面是详细情况说明: 一:无返回值的存储过程调用 存储过程: creat ...

  5. java程序调用时的调用规则,Java程序调用ILog规则出错

    Java程序调用ILog规则出错 各位大虾,想请教各位一个问题,was调用ILog,WAS应用和ILog规则部署在不同的机器上. 报错信息如下: [5/9/11 20:29:55:460 GMT+08 ...

  6. Lotus Notes 邮件归档设置

    Lotus Notes 邮件归档设置方法 1.设定归档(Archive) 选项  进入邮箱--从上部菜单选取操作(Actions)--归档(Archive)--设置(Settings)   2.作如下 ...

  7. java如何接入实时流_【技术教程】如何通过Java程序调用RTSP拉流协议视频平台EasyNVR程序接口?...

    RTSP协议视频平台EasyNVR经过多年的积累,已经是一套成熟且完善的视频平台了,用户可以通过网页直接访问视频监控,也可以通过调用二次开发接口进行二次开发或者集成.下面介绍下Java程序调用Easy ...

  8. Java程序调用c语言程序

    Java程序调用自定义c语言程序 计算机中有很多的编程语言,各有各的特色和应用范围.Java混合编程就是Java程序和其它应用程序进行通讯和数据交互,比如我们都知道c语言的计算性能要比Java的略好一 ...

  9. 微信小程序调用腾讯位置服务获取城市列表

    微信小程序调用腾讯位置服务获取城市列表 注意前期的准备: 1.需要用到微信小程序JavaScript SDK https://lbs.qq.com/miniProgram/jsSdk/jsSdkGui ...

最新文章

  1. 中文开源!它或许是最适合自学的Python教材
  2. ios日历视图实现日期输入
  3. Android安全加密:对称加密
  4. php pdo连接不成功,php – 为什么PDO在连接失败时打印我的密码?
  5. 为sap的alv的最左侧添加【选中】按钮用于同时选中多行...
  6. web前端技巧-ES6新特性与重点知识汇总(二)
  7. beta阶段第二次scrum meeting
  8. 数据库原理及应用【四】数据库管理系统
  9. 大数据技术周报第 002 期
  10. 计算机二级晓云是企业人力,全国计算机二级MsOffice真题试卷wore
  11. JavaSE学习--正则表达式
  12. mysql嵌套查询是从外向内执行的吗_MySQL嵌套查询
  13. 判断矩形是否在矩形中
  14. 激荡20年的百度帝国,曾经的王者为何从BAT掉队?到底发生了什么?
  15. 华为服务器信息失败,服务器远程信息失败
  16. Xilinx FPGA “打一拍”“打两拍”以及IOB含义
  17. 微软翻译离线简体中文服务器,第一次使用微软翻译应用只有英语离线语言包
  18. 反应式流 Java 9 Flow实战
  19. scad的oracle性质,变量选择之SCAD算法
  20. randn与rand的区别

热门文章

  1. 数据结构——平衡二叉树的的旋转问题
  2. 关于Python中输入的问题
  3. 出现:“resize.cpp:4044: error: (-215) ssize.width 0 ssize.height 0 in function cv::resize ”的问题之一
  4. 推荐tampermonkey 好用插件
  5. DIY多快充协议太阳能充电器!----硬件框图
  6. 整型转字符型以0补齐
  7. 新浪终于还是走向了私有化
  8. 字节跳动张一鸣身价594亿美元超马化腾
  9. Windows Terminal 主题配置
  10. Qt 鼠标移动实现绘图