关于Java程序调用Lotus Notes邮件服务发送邮件的实现(二实践)
在第一部分中已找到该问题的解决思路,该部分主要叙述思路3(通过远程连接Domino服务器发送邮件)的实现过程,该过程主要分为两部分:Domino配置和程序代码。
一、Domino配置
通过阅读IBM官网的Lotus 官方文档架构师的文章(Java对Domino Objects的访问:
http://www.ibm.com/developerworks/cn/lotus/ls-java_access_pt1/index.html),你会发现,要通过远程连接的方式发送邮件,需要Domino服务器开启 DIIOP 任务和端口以及其他相关配置正确,配置项如下:
A.确保已开启 DIIOP 任务
要在服务器上启动 HTTP 和 DIIOP 任务,需要确保这些任务在 Notes.ini 文件 ServerTasks 变量的任务列表中;
如果正确配置了 Server 文档该文件,Notes.ini 文件应该包含类似于下面的行:ServerTasks=Update,Replica,Router,AMgr, AdminP,CalConn,Sched,DIIOP,HTTP,LDAP
也可从运行的服务器,在控制台中输入下列命令来临时加载任务:
启动 DIIOP 任务:load diiop
但是在Domino服务器重启后,以命令加载DIIOP任务的方式无效
B.服务器配置文件的配置
1.访问控制(指定DIIOP服务端口,并设置为以用户名密码方式访问DIIOP服务)
在 Server 文档中,转至 Ports 选项卡、Internet Ports 选项卡和 DIIOP 选项卡。
设置DIIOP 的端口号,默认为 63148
设置Name&password字段为yes;
如下所示:
2.BASIC选项卡 配置(配置“Fully qualified Internet host name”字段)
在服务器 Server 文档 Baiscs 选项卡的“Fully qualified Internet host name”字段中,确保该字段已设置为域名或IP地址,如下所示:
“Fully qualified Internet host name”字段是 createSession 主机的(第一个)参数。
也可以使用服务器的 IP 地址。例如,如果 myhost.east.acme.com 的 IP 地址是 9.95.73.30,那么下列任何一个调用都有效:
Session s = NotesFactory.createSession("myhost.east.acme.com:63148")
或者 Session s = NotesFactory.createSession("9.95.73.30:63148")
3. TCP/IP的网络地址项配置
打开“当前服务器文档”–>“port”–>“Notes Network port”–>“TCPIP”–>“Net Address”项,
将 Net Address的值设定为服务器主机的IP地址。
二、程序代码
1.定义邮件实体类MailContent
package com.jhh;
public class MailContent {
private String form;
private String subject;
private String body;
MailContent(){
}
MailContent(String body){
this(null,null,body);
}
MailContent(String subject,String body){
this(null,subject,body);
}
MailContent(String form,String subject,String body){
this.form = form;
this.subject = subject;
this.body = body;
}
public String getForm() {
return form;
}
public void setForm(String form) {
this.form = form;
}
public String getSubject() {
return subject;
}
public void setSubject(String subject) {
this.subject = subject;
}
public String getBody() {
return body;
}
public void setBody(String body) {
this.body = body;
}
}
2.核心类NotesMailManager
package com.jhh;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;
import java.util.Vector;
import lotus.domino.Database;
import lotus.domino.Document;
import lotus.domino.NotesException;
import lotus.domino.NotesFactory;
import lotus.domino.Session;
public class NotesMailManager {
private String recipients;
private String dominoServerName;
private String userFilePath;
private String host;
private String userName;
private String password;
public Session getNotesSession(){
Session session = null;
try {
session = NotesFactory.createSession(host,userName,password);
} catch (NotesException e) {
System.out.println("Error happens when creating session using DIIOP port.");
e.printStackTrace();
return null;
}
return session;
}
public Session getNotesSession(String host,String userName,String passwd){
this.setHost(host);
this.setUserName(userName);
this.setPassword(passwd);
return getNotesSession();
}
public void sendMail(Session session,MailContent mailContent){
if (session == null){
System.out.println("Fail to send mail for: session is null!");
return;
}
boolean isloaded = loadProperty();
Database database = null;
Document mailDom = null;
if (isloaded){
try {
System.out.println("User: " + session.getUserName());
database = session.getDatabase(dominoServerName,userFilePath,true);
System.out.println("Database URL: "+database.getURL());
mailDom = database.createDocument();
mailDom.replaceItemValue("Form",mailContent.getForm());
mailDom.replaceItemValue("Subject",mailContent.getSubject());
mailDom.replaceItemValue("Body",mailContent.getBody());
Vector<String> recipientsVector = new Vector<String>();
String [] recipientArray = recipients.split(",");
System.out.print("send to: ");
for(String rept:recipientArray){
recipientsVector.add(rept);
System.out.print(rept+" ");
}
mailDom.save();
mailDom.send(recipientsVector);
} catch (NotesException e) {
System.out.println("Fail to send mail for NotesException!");
e.printStackTrace();
return;
}finally{
try {
if (mailDom != null){
mailDom.recycle();
mailDom = null;
}
if (database != null){
database.recycle();
database = null;
}
if (session != null ){
session.recycle();
session = null;
}
}catch (NotesException e1){
}
}
System.out.println("\n Done! The mail has been successfully sent.");
}
}
public boolean loadProperty(){
InputStream in = this.getClass().getResourceAsStream("/Mail.properties");
Properties props = new Properties();
try {
props.load(in);
} catch (IOException e) {
try {
if (in != null){
in.close();
}
in = null;
} catch (IOException e1) {
e1.printStackTrace();
}
e.printStackTrace();
return false;
}
dominoServerName = props.getProperty("dominoServerName");
userFilePath = props.getProperty("userFilePath");
recipients = props.getProperty("recipientsAdress");
host = props.getProperty("host");
userName = props.getProperty("userName");
password = props.getProperty("password");
return true;
}
public String getRecipients() {
return recipients;
}
public void setRecipients(String recipients) {
this.recipients = recipients;
}
public String getDominoServerName() {
return dominoServerName;
}
public void setDominoServerName(String dominoServerName) {
this.dominoServerName = dominoServerName;
}
public String getUserFilePath() {
return userFilePath;
}
public void setUserFilePath(String userFilePath) {
this.userFilePath = userFilePath;
}
public String getHost() {
return host;
}
public void setHost(String host) {
this.host = host;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
3.程序测试入口类MailTest
package com.jhh;
import java.util.Date;
import lotus.domino.Session;
public class MailTest {
public static void main(String[] args) {
NotesMailManager manager = new NotesMailManager();
boolean isloaded = manager.loadProperty();
if (isloaded){
Session session = manager.getNotesSession();
MailContent mc = new MailContent("System mail--test","for mail test ! \n"+(new Date()).toString());
manager.sendMail(session,mc);
}
}
}
- 大小: 18.8 KB
- 大小: 25.2 KB
- 大小: 37.3 KB
分享到:
相关推荐
在Java编程中,连接到IBM Lotus Domino(也称为Lotes)邮件服务器并读取邮件内容和附件是一项常见的任务。Lotus Domino是IBM提供的一款企业级的协作软件,它集成了电子邮件、日历、任务和文档管理等功能。这篇教程将...
标题:Lotus Notes邮件开发 描述与标签:Lotus Notes邮件开发 知识点: 1. Lotus Notes简介: Lotus Notes是一款由...开发者需要熟悉Lotus Notes的DOMINO API和Java编程语言,才能有效实现邮件自动化处理的需求。
JAVA调用IBM Notes的工具包,基本可以实现在java中操作Notes,适用的Notes版本为9.0,其它版本暂时未知,有兴趣的可以测试一下
标题"一个基于Lotus +JavaScript 实现的客户端邮件发送程序例子"表明我们将探讨如何利用JavaScript语言来构建一个功能,使用户能够在客户端直接发送邮件,而无需通过Web服务器或其他中间件。这种技术可以提高用户...
Lotus Notes是一款强大的企业级协同应用软件,由IBM公司开发,主要用于电子邮件、日历管理、任务安排、文档共享以及复杂的业务应用开发。本压缩包文件是资深Lotus Notes开发者的经验结晶,涵盖了他在长期开发过程中...
在Java编程环境中,开发者可以通过使用Lotus Notes/Domino的jar包来与Notes服务器进行交互,实现各种功能。 标题中的"Lotus Notes/Domino jar包"指的是IBM提供的Java类库,这些库包含了用于访问和操作Notes和Domino...
5. **数据库脚本**:Lotus Notes使用LotusScript或Java进行编程,这些脚本可以嵌入到表单、视图或代理中,实现更复杂的工作流逻辑。在模板中,开发者可能需要了解如何编写和调用这些脚本来控制工作流的运行。 6. **...
在Lotus Domino开发环境中,Java代理是用于执行服务器端任务的重要工具,它们可以自动化许多功能,如处理数据、发送邮件等。"lotus domnio java代理传值"这个主题主要涉及如何在Java代码中创建和使用代理,并在代理...
### Lotus Notes开发指南知识点解析 #### 一、编程概述 **6.1 在Domino中编程** - **公式**: 公式是一种具有编程语言特性的表达式,可以在其中赋值给变量并使用有限的控制逻辑。它通过调用@functions 和 @...
在Lotus Domino/Notes5.0中,Java和JavaScript可以相互配合使用,如使用Java开发服务器端的应用程序,而使用JavaScript实现客户端的交互程序。这样的组合可以使开发变得更加灵活和高效。 在开发过程中,需要注意...
JNA库允许Java代码调用本地操作系统API,这对于与非标准的邮件服务器如Lotus Domino通信至关重要。 1. **配置依赖**: 添加以下Maven依赖到你的项目pom.xml文件中: - Java Mail API: ```xml <groupId>...
在本篇文章中,我们将深入探讨如何建立和调用Lotus Domino Web服务。 首先,建立Lotus Domino Web服务涉及以下几个关键步骤: 1. **设计Web服务接口**:你需要在Lotus Domino Designer中创建一个新的Notes Form...
在Java中,通过使用Lotus Notes Java API,开发者可以创建和管理Lotus Domino的数据。这里的代码可能是用于建立一个Java客户端,使用telnet协议连接到Domino服务器,进行数据查询或者交互操作。TelnetApp.java可能...
Lotus Domino 是一种基于Notes技术的服务器端应用程序, Lotus Domino Java 代理是指在 Domino 服务器上运行的 Java 代理程序,可以用来处理用户请求、提供数据服务等。今天,我们将讨论如何在 Lotus Domino Java ...
### Lotus 数据用 Java 程序导入导出实现数据移置的方案 #### 概述 在企业级应用中,Lotus Notes 和 Domino 平台因其强大的文档管理和协作能力而被广泛采用。随着业务需求的变化和技术的发展,有时需要将存储在 ...
综上所述,"Domino R8+版本编写及调用webservice样例库"是一个关于如何在IBM Lotus Domino R8或其后续版本中创建和使用Web服务的教程或实践资源,涵盖了Web服务的创建、WSDL的使用、SOAP通信、调用服务的示例代码...
Lotus Notes/Domino 7 Web Services 是一种技术,允许开发者将 Lotus Domino 应用程序的功能暴露为可通过互联网访问的 Web 服务。Web 服务是一种基于标准的架构,使得应用程序能够跨平台交换数据和执行功能。在 ...
【标题】"Louts Notes集锦"所涵盖的知识点主要集中在Lotus Notes这一企业级协作软件上,特别是关于Java操作Domino API的实践与理论。Lotus Notes是IBM推出的一款强大的协同办公系统,它提供了电子邮件、日历、任务...
"Notes API 8.5" 是IBM Lotus Domino服务器和客户端应用程序开发的重要组成部分,它为开发者提供了与Lotus Notes和Domino系统交互的编程接口。这个API允许程序员通过编写代码来创建、读取、更新和删除Notes数据库中...
首先,要实现Java与Domino服务器的通信,需要使用Lotus Domino提供的Java API,即`lotus.domino`包。这个API允许开发者创建、读取、更新和删除Domino数据库中的文档和视图。在上述代码中,我们看到了`Domino`类是一...