关于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。
分享到:
相关推荐
asp.net调用lotusnotes收发邮件实例
Java调用SMTP命令发邮件,实现抄送,附件--无需邮件搭建邮件服务器直接发送 该功能采用了Gearmand进行任务转发
java连接Lotes邮件服务器(Domino) 读取邮件内容附件完整实例
JAVA调用IBM Notes的工具包,基本可以实现在java中操作Notes,适用的Notes版本为9.0,其它版本暂时未知,有兴趣的可以测试一下
java通过exchange协议发送和接收邮件功能。实现了发送邮件、接收未读邮件和已读邮件的功能。采用微软官方提供的EWSJavaAPI_1.2.jar包完成此项功
JAVA邮件发送工具类(支持同步和异步发送邮件以及附件信息),支持多个抄送邮件发送。
Java调用SMTP命令发邮件,实现抄送,密送,附件等。 无需邮件搭建邮件服务器直接发送,改版加入了多线程,同时邮件日志采用文件和数据库同时记录,并写了定时器对于发送失败的邮件进行统计和重发(还在完善这个功能,该...
上一篇是java发送邮件,小白再次编写了java发送outlook会议邮件,保证可执行!
Java程序调用存储过程 Java程序调用存储过程 Java程序调用存储过程 Java程序调用存储过程 Java程序调用存储过程
JAVA通过SMTP服务发送邮件,部分代码: import java.io.*; import java.net.URL; import java.util.Date; import java.util.Properties; import javax.activation.DataHandler; import javax.activation....
使用JavaMailSender包,结合Java8和springboot框架,使用公司阿里企业邮箱免费发送邮件,因为公司邮件不限数量,所以邮件测试发送无上限。对于QQ或163邮箱账户可能需要开通SMTP服务,具体信息请百度教程,有问题可以...
实用的邮件发送程序,可轻松集成至C/S架构及B/S架构的应用软件中,实现系统自动地向客户提供邮件发送服务。 其调用说明如下: 1、设置邮件服务器:void SetMailServer(char *iSrvHost,int iPort,char *iUserNo, char...
Java程序调用MATLAB接口
[JAVA]使用JNI技术实现JAVA程序调用dll、[JAVA]使用JNI技术实现JAVA程序调用dll
python程序调用邮件网关实现邮件发送,支持从配置文件获取信息,并可实现调用sql server作业调度,代码可直接使用
JAVA实现的调用梦网云通讯平台API接口实现短信发送Demo。详情请见 https://blog.csdn.net/LANSHANZHUYAO/article/details/88979026
前前后后这个问题搞了2天,由于公司的诸多条件限制,无法直接调用到公司发送邮件的接口,只有通过类似 Lotus script,VBA 等其他方式来实现。 用VBA代码实现发送邮件,其实我在n年前就实现过了 代码如下,网上一搜...
三种方式实现java远程调用(rmi) 方式一:原始方式 方式二:spring 方式三:jndi 解压,放到myeclipse上可用
用户提供一个.net的webservice,本人在java框架中调用此webservice。