摘 要:进行Domino数据库研究开发的目的,就是实现与企业应用相结合,让用户更方便快捷地了解数据库中尚未处理的邮件数量及内容,在企业内部网站上有所反映,从而提高工作效率。
关键词:WEB方式;ASP组件;新邮件接收
Lotus Domino系统在国内企事业单位办公自动化系统中应用较为广泛,Domino是比较独特和封闭的非关系数据库管理系统。通过Notes客户端可以实现安全方便的收发邮件,然而Lotus Notes身身是一种C/S模式程序,在强调系统安全性的同时,也给系统管理员和用户带来了诸多安装、管理、使用上的不便。当下邮件、公文系统使用WEB方式已成事实,本文就ASP开发环境下的Notes新邮件接收作以浅析,供初学者交流参考。
1、了解Notes/Domino工具包
我们需要首先了解用何方法从外部获得Domino/Notes系统中的数据和对象,Lotus提供的接口和工具什么样。我们可以从IBM公司得到丰富的Notes/Domino的工具包。
* Lotus C API toolkit
* Lotus C++ API toolkit
* Lotus Domino Toolkit for Java/CORBA
* Lotus and Notes Toolkit for COM
* Lotus Domino Driver for JDBC (简称LDDJ)
* NotesSQL
* Lotus XML Toolkit(简称DXL)
* Custom Tag Converion kit(简称DCT)
* LotusScript Extensions toolkit(简称LSX)
在Domino/Notes的Toolkit中,C/C++的功能最为强大,能充分利用Domino/Notes已有功能,修改数据库设计,并实现Domino/Notes的能力扩展,对数据的处理能力也最高。从未来Domino技术发展趋势看,IBM公司在Domino/Notes和J2EE平台的结合方面做了大量工作,使用Java/CORBA工具包,用户不必安装Notes客户端就可访问Domino数据库中的绝大部分数据,但Java应用数据处理的速度不快,对Notes数据对象的操纵能力与C/C++工具相比差距较大。
2、实现新邮件接收
2.1通过Domino代理写入网关数据库,前台程序比如ASP程序通过数据库接口访问数据库,从而得到新邮件数目。
2.2通过Toolkit工具统计新邮件数目,其中用CAPI实现功能较为强大,基本可以操作Notes数据库中所有的数据对象(包括数据库及ACL、文档和域、表单、视图、文件夹、代理) ,再通过ASP程序使用注册的ATL COM组件来获得Notes的未读文档数。
3、做好准备工作
我们准备用CAPI新建ATL COM工程来读出Notes未读邮件和总邮件数,开发工具准备选用Visual C++ 7.0,Lotus CAPI的应用可以根据中的信息获得当前用户信息,根据查找到的ID文件验证用户身份。Notes的绝大部分API都封装在文件中,其中包括有ACL, User,Database,Document,Item等多方面的API函数。
我们可以在IBM公司网站下载Domino对应版本CAPI,解压到相应目录例如c:notesapi下,本文以Domino5.08为例,打开目录可以看到Include目录和Lib目录,设置好系统变量包括系统路径。
4、整理编程思路
我们要整理好自己的编程思路,先打开VC++7.0,新建Visual C++项目ATL项目类型,模板选择ATL项目,可取名dmnew,设置好项目属性,添加,设置项目VC++项目,CAPI包含文件目录和库文件目录,在项目向导下的服务器类型里选择动态链接库(DLL),并添加ATL Active Server Page组件类,可取名newmail,其它属性均选择默认值,在自动生成的Idmnew 接口添加方法getnew()
{ iViewUnread++;
break;
}
}
OSUnlockObject(hBuffer);
OSMemFree(hBuffer);
}
DLL文件中引用m_piResponse对象在ASP页面显示总邮件数目和新邮件数目。
VariantInit(&varText);
= VT_I4;
=NotesFound ;
m_piResponse->Write(CComVariant(L""共有邮件""));
m_piResponse->Write(varText);
m_piResponse->Write(CComVariant(L""封""))
=iViewUnread;
m_piResponse->Write(CComVariant(L""其中有""));
m_piResponse->Write(varText);
m_piResponse->Write(CComVariant(L""封新邮件""));
在ASP文件中调用已注册的ATL DLL文件。
dim test
dim retval
set test=Object(""l"")
retval=(""notes文件名"",""notes密码"")
5、总结涉及问题
5.1中文处理问题
Domino涉及到中文部分需要处理,每个中文字符前面需加0x13,GB2312编码大约包含6000多汉字(不包括特殊字符),编码范围为第一位b0-f7,第二位编码范围为a1-fe,用以下函数进行处理:
void hangzi_zhuan(char *src,char *des)
{ unsigned char highchar;
unsigned char lowchar;
int l;
int k;
int m;
l=WORD(strlen(src));
for(k= 0,m=0;k<=l;k++,m++)
{
lowchar =( unsigned char)( srcLotus C API 5.0.8 User Guide
中国论文网(www.lunwen.net.cn)免费学术期刊论文发表,目录,论文查重入口,本科毕业论文怎么写,职称论文范文,论文摘要,论文文献资料,毕业论文格式,论文检测降重服务。