【VB开源代码栏目提醒】:网学会员VB开源代码为您提供具有收发Email功能的VB应用程序 - 项目管理参考,解决您在具有收发Email功能的VB应用程序 - 项目管理学习中工作中的难题,参考学习。
具有“收发E-maiI”功能的
VB应用程序张香芸徐成俊西北师范大学甘肃兰州730070甘肃省计算中心甘肃兰州730030摘要使用VisuaIBasic6.0提供的MAP控件———MAPession和MAPMessage通过调用微软公司的MAPMessagingAppIicaionProgrammingnerface消息应用程序编程接口实现收发电子邮件的功能。
关键词VBMAP控件中图分类号TP3ll.lTP3l6.7l引言随着nerne的不断发展和nerne应用的日益广泛电子邮件已经和人们的生活息息相关。
特别对于某些执行特殊任务的应用程序而言发送和接收电子邮件是一个十分有用的功能。
例如一个监视网络服务器资源使用情况的工具
软件如果它具有自动发送电子邮件的功能那么当它发现服务器的资源使用已经接近事先设定的临界状态时便可以向系统管理员发送一封告警的电子邮件从而使系统管理员能够及时地采取措施以避免重大事故的出现。
在VisuaIBasic6.0中应用程序可以通过调用微软公司的MAPMessagingAppIicaionProgrammingnerface消息应用程序编程接口实现收发电子邮件的功能。
编制具有收发电子邮件功能的
VB程序必须使用VisuaIBasic4.0以上的版本因为只有4.0以上的VisuaIBasic才带有两个实现电子邮件收发功能的核心控件MAPession控件和MAPMessage控件。
控件用于建立和控制一个MicrosofMaiI会话控件用于创建和收发邮件消息。
此外程序必须运行在采用遵从MAP的消息
系统如MicrosofExchange、MicrosofMaiI、MicrosofOuIook等的环境中。
本文使用MicrosofOuIook2003。
在开始编程之前首先需要将MAP控件加入
VB工具箱。
具体操作是在
VB的工具栏上单击鼠标右键选择“部件…”菜单调出“部件”对话框在其中的“控件”
列表框中选中“MicrosofMAPConroIs”表项然后按“OK”命令按钮退出该对话框。
此后工具箱中将新添两个图标这就是MAPession控件和MAPMessage控件的图标。
2邮件发送程序邮件发送程序的基本处理过程是根据用户输入信息组成邮件然后使用MAP消息控件的end方法将邮件发出。
编程步骤如下第一步向窗体中增加如下表所示的控件及属性控件属性设置FormNameFormlCapionEmaiI发送器MAPessionNameMAPlMAPMessageNameMAPMlTexNamexendoTexTexNamexubjecTexTexNamexMessageTexMuiIineTrueLabeINameLabeIlCapion收件人LabeINameLabeI2Capion主题LabeINameLabeI3Capion内容CommandNamecmdsendCapion发送第二步编写
程序代码第20卷第ll期2004年ll月甘肃科技GansucienceandTechnoIogyVol.20No.llNo.2004I、将下列
代码加入FormI的Form-Load事件PrivateSubForm-LoadMAPSI.SignnEndSub2、将下列
代码加入FormI的Form-noad事件PrivateSubForm-noadCanceAsntegerMAPSI.SignffEndSub3、将下列
代码加入cmdSend的Cick事件PrivateSubcmdSend-CickWithMAPMI.MsgndexI.ecipispayametxtSendTo.Text.MsgSubjecttxtSubject.Text.MsgoteTexttxtMessage.Text.SessionMAPSI.Session.SendEndWithMsgBox“邮件发送完毕”“发送邮件”EndSub在填写完邮件的收件人、主题和内容后按“发送”命令按钮如果没有出现运行时错误提示那么就表明邮件已经成功地发往目的地了否则请检查填写的收件人地址是否准确无误以及系统中运行的消息系统
工作是否正常。
3邮件接收程序邮件接收程序比邮件发送程序稍微复杂一些。
首先需要使用MAP消息控件的Fetch方法读取邮件这个过程将把用户收件箱中所有未读邮件全部装入MAP消息控件中。
然后检查MAP消息控件的MsgCount属性以确定通过Fetch方法读取的邮件的总数。
接着可以通过设置MAP消息控件的Ms-gndex属性来指定具体需要处理哪一封邮件。
需要说明的是Msgndex属性值的计数是从0开始的也就是说第一封邮件的索引号是0第二封邮件的索引号是I依次类推。
编程步骤如下第一步向窗体中增加如下表所示的控件及属性第二步编写程序
代码控件属性设置FormameFormICaption接收邮件MAPSessionameMAPSIMAPMessageameMAPMILabeCaption日期LabeCaption发件人LabeCaption主题LabeCaption主题LabeamebMsgateeceivedCaption“”LabeamebMsgrigispayameCaption“”LabeamebMsgSubjectCaption“”TextametxtMsgoteTextCaptionLockedMutiineScroBars2VerticaLabeamebMsgCountCaption“第0封邮件总计0封邮件”CommandamecmdPreviousCommandamecmdextCommandamecmdCoseI、编写一个窗体级子例程FetchewMaiPubicSubFetchewMaiMAPMI.FetchnreadnyTrueMAPMI.FetchEndSub2、编写一个窗体级子例程ispayMessagePubicSubispayMessagebMsgCount.Caption“第”-LTrimStrMAPMI.MsgndexI“封邮件总计”-LTrimStrMAPMI.MsgCount“封邮件”bMsgateeceived.CaptionMAPMI.Msg-ateeceivedtxtMsgoteText.TextMAPMI.MsgoteTextbMsgrigispayame.CaptionMAPMI.Ms-grigispayamebMsgSubject.CaptionMAPMI.MsgSubjectEndSub3、将下列
代码加入FormI的Form-Load事件PrivateSubForm-LoadMAPSI.SignnMAPMI.SessionMAPSI.SessionFetchewMaiispayMessage05甘肃科技第20卷EndSub4、将下列
代码加入cmdPrevious的Cick事件PrivateSubcmdPrevious-CickIfMAPIM.MsgIndex0ThenMAPIM.MsgIndexMAPIM.MsgIndexDispayMessageEseBeepEndIfEndSub5、将下列
代码加入cmdCose的Cick事件PrivateSubcmdCose-CickUnoadMeEndSub在窗体加载过程中窗体Load事件中的
代码会读取新邮件如果有新邮件就显示第一个新邮件。
如果有多个新邮件则可以使用“上一封”和“下一封”命令按钮前后翻阅。
4接收邮件与邮件附件4.接收邮件本例是读取用户收件箱中所有未读邮件如果要读取收件箱中所有的邮件那么只需在执行Fetch方法之前将MAPI消息控件的FetchUnreadOny属性设置为Fase。
具体接收的邮件是否已经读过可以通过Msgead属性来判别。
如果邮件的正文或附件曾经被浏览过那么该邮件就会自动标记为已读不过只浏览邮件的主题不会标记该邮件已读。
4.2邮件附件与处理邮件的方式一样MAPI也为邮件的附件提供了一个计数器和一个索引。
在处理收到的邮件时可以通过检查AttachmentCount属性来确定该邮件携带了多少个附件然后可以通过设置Attach-mentIndex属性依次处理每一个附件。
AttachmentIndex的合法取值范围为0至Attach-mentIndex。
在设置了AttachmentIndex属性值后可以读取附件的下列属性Attachmentame当附件是一个文件时该属性用于指定文件的名称。
当附件是一个OLE对象时该属性用于指定对象的类型。
AttachmentPath该属性用于指定做为附件的文件的全路径名。
AttchmentPosition该属性用于指定附件在邮件内容部分中的位置。
当邮件收发程序显示邮件内容时将使用该属性提供的信息把附件的标志放在合适的位置。
AttachmentType该属性用于指定附件的类型其合法取值为三个整数型数值在
VB中分别由下列常量表示??mapData附件是一个数据文件??mapEOLE附件是一个嵌入式OLE对象??mapSOLE附件是一个静态OLE对象发送邮件时上述属性的使用方法与接收邮件时相同只不过由读操作改为写操作了。
值得一提的是AttachmentIndex属性发送邮件时可以将其设置为任意值。
而AttachmentCount属性则会自动设置为正确的值无需人为设置。
5总结通过分析上述两个程序的
代码可以归纳出具有收发电子邮件功能的
VB程序的基本流程如下.使用MAPI会话控件建立一个邮件会话。
2.使用MAPI消息控件进行邮件的处理工作。
3.再次使用MAPI会话控件释放邮件会话。
上述程序在VisuaBasic6.0企业版中调试通过。
参考文献罗朝胜.《VisuaBasic6.0程序
设计教程》.人民邮电出版社.20029.2陈峰棋.《VisuaBasic
网络编程从入门到精通》.中国铁道出版社.20029.3肖诩.《VisuaBasic6.0及其应用》.复旦大学出版社.20029.5第期张香芸等具有“收发Emai”功能的
VB应用程序