利用VB操作LotusNotes数据库发送邮件_第1页
利用VB操作LotusNotes数据库发送邮件_第2页
利用VB操作LotusNotes数据库发送邮件_第3页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、利用 vb 操作 lotus notes 数据库发送邮件刘海峰( 吉林省气象台, 长春张丽娜130062)( 长春市气象局)notes 中使用 ole 或 com。ole 是 windows 的一个特征, ole 通过把应 用程序的功能作为对象暴露给其他应用程序, 这 些对象拥有属性( 数据) 和方法( 函数) , 应用程序 通过 ole 中的对象去执行相应的任务。domino 既可以作为一个 ole 提供给外部程序调用, 也可 以通过 ole 去控制其他 ole 对象。尽管 ole 也提要介 绍 了 lotus n otes co m 组 件 功 能 的 优 缺点, 讨论了使用 visual

2、 basic 访问 n otes 类的方法, 提供了快速发送 n otes 邮件的 visual basic 程序源 代码。关键词: vb; lotus n otes; 数据库; 邮件; co m1 引言lotus notes 是一款功能强大、使用方便的办 公自动化软件, 它是 lotus 公司推出的群件系统, 除了作为办公应用软件外, 还可以作为一个开发 平台, 被企事业单位广泛使用。气象部门应用 notes 系统作为内部办公平台已有多年历史。当 前, 中国气象局许多业务( 如预警信号、灾情信息、 应急信息等) 均要求通过notes 及时上传。由值班 员手工发送 notes 邮件既费时又费力

3、, 特别是向 多单位发送预警信号邮件时消耗的时间更多。visual basic 是微软公司在中 国 力 推 的 编 程 工具, 它具有易学易用、编程简洁、程序集成化程 度高等优点。notes 数据库( domino) 是文档型数据 库, 它使用 lotusscript 编写相应的代码完成设计 者的需求。visual basic 如何与 notes 数据之间进 行 交 互 呢 ? 本 文 讨 论 了 使 用 visual basic 访 问 notes 类的方法并提供发送 notes 邮件的源代码, 以期提高业务工作效率。2 设计思路异构数据环境是一个普遍存在的问题, win- dows 常用开

4、放数据库互连标准 odbc 进行数据 交换与操作, 后来微软又推出了 ado 技术, 例如 用 vb 操作 oracle、sybase 和 sql server 等, 其应 用也越来越普遍。而 lotus notes 数据库系统属于 非关系数据库管理系统, 它具有基于文档组织模 式、使用非结构化的数据元素、通过定时复制刷新 数据、使用视图定位数据、通过全文检索访问数据 等特点。因为 ado 或 odbc 的方法是针对 oracle 等关系数据库管理系统的, 主要是通过 sql 语言 访问数据, notes 尽管也提供了 notes odbc, 但它 并不支持全文检索, 因此要在 vb 中实现对

5、 lotus有许多优点,但 domino 的 ole 服务不支持早期绑定, 这意味着在 vb 等应用程序中对 ole 编程进行类型检查、快速启动时, domino ole 将强迫 应用程序启动 notes 的客户端, 即必须先把 notes 运行起来。此外, 应用程序不能同时启动 多 个 notessession, 主要出于安全角度, domino 的 ole 不允许应用程序直接输入用户名和密码, 因此整 个应用程序要么频繁地启动和关闭 domino ole 来打开 notessession, 要么大量使用全局变量, 这 样对程序设计极为不利。在 lotus notes r5.0.3 ( 吉林

6、省目前普遍使用 的版本是 lotus notes r5.0.12) 以后, lotus 提供了 一个后台的 com 类 notessession。notessession 是 一个功能强大的对象模型, 它提供了其他 notes 对象的接口, 即只有通过它才能访问 notes 中的 数据库 notesdatabase、notesview 等对象。vb 操作 domino com 具有以下优点, vb 应用程序不需要 调 用 lotus notes 客 户 端 就 可 以 访 问 notes 的 函 数; 程序员可以在设计时使用早期绑定, 其速度比 晚绑定快, 最主要的是可以利用 vb6 的智能语

7、法 提示功能; com 的运行速度比 lotus script 快; 可 以独立于 lotus notes 客户端进行应用程序分发。 当然, domino com 也存在一些不足, 如, 目前 lo-tus 只支持后台的 domino 对象, 即 session,对于uiworkspace 并不支持; 由于 com 只被 windows所支持, 目前 unix 还不能使用本文所论述的方 法 ; 出 于 安 全 原 因 , louts 目 前 不 支 持 dcom 技 术; lotus 提供的 com 并不支持“ref”内存指针, 标 准 com 提 供“ref”、“unique”和“ptr”三

8、 种 内 存 指 针, 其中“ref”开销最小。notes 数据库的存取,必须通过别的方法, 即在3程序实现图 1 在 vb 工程里引用 lotus domini objectsdomino com 提供了许多属性和方法, 本文只讨论如何发送邮件的功能, 其它操纵数据库进 行后台管理的功能读者可以参考 notes 自带的帮 助文档。首先确认你的机器已安装好 notes 5.0 版本 以上的客户端软件, 并能正常运行。在 vb 工程里 引用 lotus domini objects, 如图 1 所示。maildbname = mailxxx.nsf”请用自己的邮箱取代 xxx”打开 notes

9、邮箱set maildb = session.getdatabase (becc_s/ 吉 林 /cma, maildbname) ”在 notes.ini 文件可轻 易找到你自己的服务器if maildb.isopen = true thenelse maildb.open end if”创建新邮件set maildoc = maildb.createdocumentcall maildoc.replaceitemvalue(form, mem- o)”设定接收者, recipient 为一数组, 只给一个人时可设为一变量call maildoc.replaceitemvalue(sendt

10、o, re- cipient)”邮件标题call maildoc.replaceitemvalue(subject, sub- ject)”邮件正文内容set body = maildoc.createrichtextitem(body) call body.appendtext(bodytext)”添加附件call body.addnewline(2)call body.embedobject (1454, , attachment, attachment)”保存附件maildoc.savemessageonsend = true”发送邮件call maildoc.replaceitemva

11、lue (posteddate, now()call maildoc.send(false) msgbox 发送完毕! ”释放对象set maildb = nothing set maildoc = nothing set attachme = nothing set session = nothingset embedobj = nothingend sub以 下 函 数 模 块 可 实 现 发 送 带 附 件 的 邮 件 给recipient 变量中指定的收件人。public sub sendnotesmail(subject as string, attach- ment as stri

12、ng, recipient () as variant, bodytext as string, saveit as boolean)dim maildb as new notesdatabase”定义邮件数据库dim username as string”定义当前用户 notes 名称dim maildbname as string”定义当前用户邮件数据库dim maildoc as new notesdocument”定义邮件中的文档dim attachme as new notesrichtextitem”定义文本对象dim session as new notessession”定义

13、notes 会话dim embedobj as new notesembeddedobject”定义附件对象”创建 notes 会话set session = createobject (lotus.notesses- sion)call session.initialize图 3 9 月 18 日 20 时 500hpa 形势和 21 时红外云图 图 4 9 月 18 日 20 时 700hpa 流场可用下面的过程调用发送模块,的 notes 信箱用文件 group.txt 设定:private sub sendmail()dim mysubject as string 标题其中接收者do

14、until eof(3) line input #3, ss myrec(k) = trim(ss) k = k + 1loopclose 3redim myrecipient(1 to k - 1) 确定有 k- 1个接收者for i = 1 to k - 1 myrecipient(i) = myrec(i)next icall sendnotesmail (mysubject, myattachment, myrecipient(), mybodytext, mysaveit)end subdim myattachment as string 附件文件名dim myrecipient()

15、 as variant 接收者, 可能1 到多个,故先定义一个动态数组dim myrec (1 to 100) as string 假设最多有100 个dim mybodytext as string 信件文本内容 dim mysaveit as boolean 是否保存 mysubject = 暴雪红色预警信号 myattachment = app.path & 暴雪红色.docmybodytext = 吉 林 省 气 象 台 2008 年 1 月15 日 16 时发布暴雪红色预警信号 mysaveit = true 群发给哪些人k = 1open app.path & group.txt

16、for input as #34结 论采用 com 作为 vb 与 notes domino 的桥梁,既可以发挥 domino 强大的文档处理能力, 又可以发挥 vb 友好的可视化功能。将 notes 接发邮件功 能嵌入业务应用程序中可适当提高工作效率。( 上接第 34 页) 中尺度加密雨量站监测到的降水量, 作业区域内的平均降水量为 69.5mm。分析作 业区域由于进行人工增雨而增加 34mm 左右的降 水量。3 作业效果分析9 月 7- 9 日增雨作业效果较明显, 15 日作业 效果较差。从地面云的观测资料来看, 7- 9 日为层 积云和对流云, 水汽较多。15 日为层积云, 云中水 汽含量相对较少, 作业后地面降水增加微弱, 增雨 效果不理想。9 月 18- 20 日增雨效果显著, 从云图资料来 看, 云顶高度较高, 且层状云中镶

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论