


下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、浅析WEB方式进行Notes新邮件接收摘要:进行Domino数据库研究开发的目的,就是实现与企业应用相结合,让用户更方便快捷地了解数据库中尚未处理的邮件数量及内容,在企业内部网站上有所反映,从而提高工作效率。关键词:WEB方式;ASP组件;新邮件接收Lotus Domino系统在国内企事业单位办公自动化系统中应用较为广泛,Domino是比较独特和封闭的非关系数据库管理系统。通过Notes客户端可以实现安全方便的收发邮件,然而Lotus Notes身身是一种C/S模式程序,在强调系统安全性的同时,也给系统管理员和用户带来了诸多安装、管理、使用上的不便。当下邮件、公文系统使用WEB方式已成事实,本
2、文就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
3、) * 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客户端就可访问
4、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未读邮
5、件和总邮件数,开发工具准备选用Visual C+ 7.0,Lotus CAPI的应用可以根据notes.ini中的信息获得当前用户信息,根据查找到的ID文件验证用户身份。Notes的绝大部分API都封装在nNotes.dll文件中,其中包括有ACL, User,Database,Document,Item等多方面的API函数。 我们可以在IBM公司网站下载Domino对应版本CAPI,解压到相应目录例如c:notesapi下,本文以Domino5.08为例,打开目录可以看到Include目录和Lib目录,设置好系统变量包括系统路径。 4、整理编程思路 我们要整理好自己的编程思路,先打开VC+7
6、.0,新建Visual C+项目ATL项目类型,模板选择ATL项目,可取名dmnew,设置好项目属性,添加notes.lib,设置项目VC+项目,CAPI包含文件目录和库文件目录,在项目向导下的服务器类型里选择动态链接库(DLL),并添加ATL Active Server Page组件类,可取名newmail,其它属性均选择默认值,在自动生成的Idmnew 接口添加方法getnew( BSTR username, BSTR passwd, VARIANT* vOut), 开始需要初始化Notes环境,打开数据库,使用其自动建立的m_piResponse对象,可以在ASP页面上输出出错信息,便于
7、调试。 error =NotesInit(); if ( error!=NOERROR) OSLoadString(0, ERR(error), szErrorStr, 256 - 1); varText.vt = VT_BSTR; varText.bstrVal = CComBSTR(szErrorStr).Copy(); m_piResponse-Write(varText); return S_OK; 使用SECKFMSwitchToIDFile自动切换到指定ID,这个API不能支持复杂密码,同时修改Notes.ini相关配置。 error= SECKFMSwitchToIDFile(
8、idfile, idpassword, idUserName, 100, 0, NULL); 依据变量server_name,pathname构成Domino数据库全路径,打开数据库。 error = OSPathNetConstruct(NULL, server_name,pathname,full_netpath); error=NSFDbOpen(full_netpath, &hDb);/打开数据库 获得指定数据库所有的未读文档列表,与此同时更新内存中未读文档列表。用户的未读标志存放在客户端的desktop.dsk文件和服务器的数据库,当用户关闭数据库时,客户端和服务器的未读标志会同步。
9、 nameLen=WORD(strlen(zhUserName); error = NSFDbGetUnreadNoteTable(hDb,zhUserName,nameLen,TRUE,&hTable); error=NSFDbUpdateUnread(hDb,hTable);/ 得到数据库中某个视图或文件夹的未读文档数和信息 error=NIFFindDesignNoteByName(hDb,zhViewName,&ViewID); /取得指定视图或文件夹的所有文档 error=NIFOpenCollection(hDb,hDb,ViewID,0,hTable,&hCollection,N
10、ULL,NULL,NULL,NULL); error=NIFUpdateCollection(hCollection); 利用NIFReadEntries读取文档集的指定文档,再与前面的所有未读文档列表逐一比较,相同的则是该视图或文件夹的未读文档列表。 CollPosition.Level=0; CollPosition.Tumbler=0; /读取文档集的指定文档 error=NIFReadEntries(hCollection,&CollPosition,NAVIGATE_NEXT,1L,NAVIGATE_NEXT,0xFFFF,READ_MASK_NOTEID,&hBuffer,NULL
11、,NULL,&NotesFound,&SignalFlags); if (hBuffer !=NULLHANDLE) IdList=(NOTEID far *)OSLockObject(hBuffer); while(IDScan(hTable,fFirst,&NoteID)/依次取得hTable表中的文档号 fFirst=FALSE; for (i=0;iWrite(CComVariant(L共有邮件); m_piResponse-Write(varText); m_piResponse-Write(CComVariant(L封) varText.lVal =iViewUnread; m_p
12、iResponse-Write(CComVariant(L其中有); m_piResponse-Write(varText); m_piResponse-Write(CComVariant(L封新邮件); 在ASP文件中调用已注册的ATL DLL文件。 dim test dim retval set test=Server.CreateObject(dmnew.newmail) retval=test.getnew(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=0xa1) & (highchar=0xb0)& (lowchar=0xf7) /此字符是汉字 des=0x13; des=lowch
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 施工现场管理常识试题及答案
- 2025年项目管理人员安全培训考试试题含答案AB卷
- 中级经济师考试的国际经济政策解析与试题及答案
- 2024-2025职工安全培训考试试题带答案(新)
- 市政工程协调管理试题及答案2025
- 2025-2030年阿司匹林行业市场现状供需分析及投资评估规划分析研究报告
- 2025-2030年防晒油行业风险投资发展分析及投资融资策略研究报告
- 2025-2030年银行信息化产业市场发展分析及发展趋势与投资研究报告
- 2025-2030年针织女装市场前景分析及投资策略与风险管理研究报告
- 2025-2030年金属包装材料行业市场深度调研及发展前景与投资研究报告
- 7分析一个实际的环境问题课件科学五年级下册教科版
- 小学英语语法专题训练:名词所有格(含答案)
- 公司食堂外包项目投标方案(技术方案)
- 2023年全国职业院校技能大赛-直播电商赛项规程
- 事业单位的现金管理制度
- GB/T 35170-2024水泥窑协同处置的生活垃圾预处理可燃物
- 自动控制理论(哈尔滨工程大学)智慧树知到答案2024年哈尔滨工程大学
- DL∕T 5161.5-2018 电气装置安装工程质量检验及评定规程 第5部分:电缆线路施工质量检验
- 煤矿重要岗位人员《水泵司机》复训机考题库(含答案)
- AQ 1020-2006 煤矿井下粉尘综合防治技术规范(正式版)
- 专题12 应用文写作-【中职专用】备战2025年对口高考语文题型专练 (解析版)
评论
0/150
提交评论