
设计开发
数字技本开与或用
C#语言集成LotusNotes客户端实现邮件发送
林凯1李晓伟2倪伏跃1
(1.阳原县气象局河北张家口075800;2.张家口市卫计委河北张家口075000)
摘要:LotusNotes通常被称为群件,它是一款集电子邮件、通讯软件、数据库软件、文件管理软件、工作流软件于一体的办公软件。日前,Latus Notes系统在气象部门的应用主要体现在公文的收发,预警信号,实情直报等。本文介绍了通过COM访问LotusDomino资源类,使用Microsoft.NET 访问LotusNotes的数据序,实现快违发送LotusNotes邮件
关键词]:Microsoff.NET Lotus Notes Domino COM
中图分类号:TP311 1设计思路
文献标识码:A
Windows通常通过开放数据库互连标准ODBC进行数据交换与操作,后来微软文推出了ADO技术用于Oracle等关系数据库管理系统,尽管也提供了NotesODBC,但它并不支持全文检索,因此要在Microsoft.NET中实现对LotusNotes数据库的存取,必须通过别的方法,即在Notes中使用COM和OLE。
OLE是Windows的一个特征,OLE通过把应用程序的功能作为对象暴露给其他应用程序,这些对象拥有属性(数据)和方法(函数),应用程序通过OLE中的对象去执行相应的任务。Domino既可以作为个OLE提供给外部程序调用,也可以通过OLE去控制其他OLE对象。在R5.03以后,Lotus提供了一个后台的COM类NotesSession。 NotesSession是一个功能强大的对象模型,它提供了其他Notes对象的接口,即只有通过它才能访问Notes中的数据库对象
NotesDatabase,NotesView等。 2程序实现
下面仅介绍通过Domino
COM的NotesSession和
NotesDatabase属性和方法,来实现邮件发送的功能。其它的应用可参考LotusNotes的帮助文档.设计程序之前必须取得三个信息:① 服务器的描述(如:besz_s/河北/CMA),②邮件文件信息(如 mail>zkyangyuan,nsf)@用户密码(如:yangyuan)。启动vs2008 项目,添加COM引用。
(1)首先先登陆当前激活的邮箱,以下函数模块可以实现登陆邮箱的功能。
private void loginMail() try
码
stringPassWord="yangyuan",//登陆时需要输人的密//定义Notes会话
NotesSession ns = new NotesSession();//初始化Notes会话
ns, Initialize(Pass Word),//邮件数据库的服务器描述
string mail_Server="besz_s/河北/CMA",//当前用户的邮件数据库
string mail_dbName=@"mailzkyangyuan.nsf",
//定义邮件数据库 NotesDatabase ndb;
//初始化NotesDatabase登陆Notes
ndb =ns, GetDatabase(mail_Server, mail_dbName, false);
if (ndb. IsOpen == false) ndb.OpenO;
收稿日期:20160217
文章编号:1007-9416(2016)05-0156-02
catch (Exception ex)
MessageBox.Show("远程数据库连接失败!")
(2)正常登陆邮箱后可以通过以下函数模块可以实现发送带附件的邮件到指定收件人的邮箱。
//Subject表示邮件主题,Body表示邮件正文,Attachment表示邮件附件的文件,Receive_People表示收件人信息
Private void MailSend(String Subject, String Body,String I Attachment, String Receive_People)
try
if (ns 1= null)
stringll people = Receive_People.Split(", '), foreach (string str in people)
NotesDocument doc = ndb. CreateDocument(); doc.ReplaceltemValue("Form", *Memo"),
doc.ReplaceltemValue("SendTo", str);//邮件主题
doc.ReplaceltemValue("Subject", Subject),//邮件正文
NotesRichTextItem rt = doc. CreateRichTextItem("Body');
rt. AppendText(Body),//附件
if (1string.IsNullOrEmpty(Attachment[0]) 1//可以添加多个附件
NotesRichTextitem attachment = doc. CreateRichTextItem("attachment"),
foreach (string Str in Attachment)
attachment,EmbedObject(EMBED_TYPE. EMBED_ATTACHMENT, "",Str,attachment");
//发送邮件
object obj = doc. GetItemValue("SendTo"),
doc.Send(false, ref obj); doc = null,
MessageBox.Show("邮件发送成功!");
作者简介:林凯(1982一),男,汉族,河北尚义人,中共竞,工程师大学本科,研究方向:气象软件开发、气象服务 56