利用VB操作LotusNotes数据库发送邮件.doc

上传人:文库蛋蛋多 文档编号:2385179 上传时间:2023-02-17 格式:DOC 页数:3 大小:506.50KB
返回 下载 相关 举报
利用VB操作LotusNotes数据库发送邮件.doc_第1页
第1页 / 共3页
利用VB操作LotusNotes数据库发送邮件.doc_第2页
第2页 / 共3页
利用VB操作LotusNotes数据库发送邮件.doc_第3页
第3页 / 共3页
亲,该文档总共3页,全部预览完了,如果喜欢就下载吧!
资源描述

《利用VB操作LotusNotes数据库发送邮件.doc》由会员分享,可在线阅读,更多相关《利用VB操作LotusNotes数据库发送邮件.doc(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 日为层积云, 云中水 汽含

17、量相对较少, 作业后地面降水增加微弱, 增雨 效果不理想。9 月 18- 20 日增雨效果显著, 从云图资料来 看, 云顶高度较高, 且层状云中镶嵌有对流云团,地面观测为雨层云, 云底高度在 1000m 左右, 所以整个云系厚度达 5000m 左右, 此类云中水汽丰 富, 增雨效果显著。4 小结从以上三次人工增雨过程来看, 云中水汽含 量多少及水汽输送对增雨效果影响较大。如 9 月18- 20 日增雨作业中, 副高后部水汽输送及台风 外围云系水汽充足, 增雨作业效果较好。另外有较强的冷空气南下造成暖空气抬升水汽凝结的天气系统进行作业效果明显( 如 9 月 7- 9 日) 。冷空气 较弱或暖湿气流较弱的天气系统, 增雨效果较差( 9 月 15 日) 。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 建筑/施工/环境 > 项目建议


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号