当前位置: 首页 > 学习 > 电脑学习 > 程序设计 > PowerBuliden > 实例代码 > 正文

用PB编写邮件应用程序

http://www.zk168.com.cn  招考学习网 2006-4-6 13:19:17
-----------------------------------------------------------[交流]-[打印]-[发送]-[收藏]--
由于受到强大数据库功能的掩盖,PB的邮件功能鲜为人知。在VB中可以轻松地利用CDO控件发邮件(Delphi中用NMSMTP),而PB中的邮件函数比它们更灵活、方便。

PB以其独特高效的数据库访问技术,赢得了广大程序员的青睐。从表面上看,它似乎只适合于开发数据库应用程序,而事实上,PB遵照信报接口MAPI的标准,开发了许多内部函数和数据结构,用于对电子邮件提供支持,因此也是一个相当不错的邮件应用程序开发工具。

一个邮件应用程序要处理的基本事务主要包括:登录到邮件服务器开始会话、接发邮件、结束邮件会话。在PB中,所有这些事务都围绕mailSession对象来展开,因此,编程时,需要在主窗口中定义一个该类型的实例变量:

mailSession MyMail

然后在Open事件中将其初始化:

MyMail=Create mailSession

1.登录到邮件服务器

MyMail经过初始化以后,还要用mailLogon命令将其连接到一个邮件服务器:

MyMail.mailLogon(′jq75′,′alexander′,mailNewSessionWithDownLoad!)

前两个参数分别为用户名和口令,若被忽略,运行时就会出现一个注册对话框。最后一个参数表示新建一个邮件会话,并将服务器上属于jq75的邮件下载到他的收件箱中。

图1

2.阅读邮件

用户信息在服务器上通过验证以后,一个有效的邮件会话就建立了,接下来要做的工作就是接发邮件。

PB用一个mailMessage对象来描述一封邮件,该对象封装了邮件的主题、地址、消息体和附件等信息。图1是邮件应用程序的阅读界面,它列出了收件箱中的所有邮件,可选择其中一封进行阅读。主窗口Open事件的代码为:

…… //连接到邮件服务器
MyMail.mailGetMessages()
//用收件箱中的邮件填充MyMail对象
iNum=UpperBound(MyMail.MessageID[])
//获取收件箱中的邮件数目
For i=1 To iNum //读取收件箱中的每一封邮件,并将其主题添加到列表框中
MyMail.mailReadMessage(MyMail.MessageID[i],msg, mailEntireMessage!,True)
tab—1.tabpage—1.plb—1.AddItem(msg.Subject,1)
Next //msg为mailMessage类型的实例变量
在plb—1控件的SelectionChanged事件中加入下列代码:
MyMail.mailReadMessage(MyMail.MessageID[index],msg, mailEntireMessage!,True)
sle—1.Text=msg.Subject
//显示当前邮件的主题
sle—2.Text=msg. Recipient[1].Address
//显示发件人地址
sle—3.Text=msg.DateReceived
//显示收件时间
mle—1.text=msg.NoteText
//显示邮件的消息体
iAttachmentFileNum=UpperBound(msg.AttachmentFile[])
//获取当前邮件的附件数目
For i=1 To iAttachmentFileNum
strAttFile= strAttFile +msg.AttachmentFile[i].PathName+″~r~n″
Next //strAttFile为String类型的实例变量

在“附件”按钮的Clicked事件中加入下列代码:

MessageBox(″邮件附件″, strAttFile) //显示当前邮件的附件及其在硬盘上存放的位置

3.发送邮件

图2是邮件应用程序的发送界面,它接收收件人地址、邮件主题、消息体和附件,用于填充一个mailMessage类型的对象msg,然后发送。“添加附件”按钮用于选择磁盘文件,其Clicked事件代码为:

图2

String docName, Named
Integer Value
Value = GetFileOpenName(″选择附件″, docName, Named, ″DOC″, ″All Files (*.*),*.*″)
If Value = 1 Then
plb—2.AddItem(docName,1)
//docName中必须包含完整的路径信息
“删除附件”按钮用于把已添加的文件去掉,其Clicked事件代码为:
Ind= plb—2.SelectedIndex()
If Ind〈〉-1 Then plb—2. DeleteItem(Ind)
“发送”按钮的Clicked事件代码为:
msg.Subject=sle_4.Text //邮件主题
msg.NoteText=mle—2.Text //消息体
msg.Recipient[1].RecipientType=mailTo!
//指定收件人类型为mailTo!
msg.Recipient[1].Address=′SMTP:′+sle—5.Text
//收件人地址,前面必须加上SMTP协议
For i=1 To plb—2.TotalItems()
//把选中的文件加到附件中
msg.AttachmentFile[i].FileType=mailAttach! //指定附件i的类型
msg.AttachmentFile[i].PathName= plb—2.Text(i) //附件i的完整文件名
Next
MyMail.mailSend(msg) //发送邮件

4.结束邮件会话

在“退出”按钮的Clicked事件中加入下列代码:

MyMail.mailLogoff() //结束邮件会话
Destroy MyMail //销毁会话对象

至此,一个简单的邮件应用程序就编好了,它虽然还不足以和FoxMail、Outlook相媲美,但已经具备了它们最基本的功能。

例子中的程序在PB6.5中调试通过,大部分代码可以直接利用。

-----------------------------------------------------------[交流]-[打印]-[发送]-[收藏]--
最新入库:
 
·实质、过程及意义——阿多尔诺“否定的辩证法”探微
·从Ontology的译名之争看哲学术语的翻译原则
·论马克思主义哲学经典的解释——解释学方法及其在马克
·中国哲学当前的核心与周边问题
·和合学与21世纪文化价值和科技
·中国文化的和合精神与21世纪
·宗教之间理当相互宽容
·上半个世纪的自由主义
·殷周至春秋时期神人关系之演进
·大学之道:构建以“三纲八目”为核心的道德修养体系
相关内容:
 
·BOG压缩机在液化石油气基地的应用
·LFCB-102型微波分相差动保护的应用
·基于PB6和ORACLE8开发“劳动信息管理系统”
·利用TDC组件实现对WEB页面的交互操作
·关于SBS改性沥青配合比设计及施工技术的探讨
·PowerBuilder的分布式计算技术及其应用
·PowerBuilder和MapInfo的集成开发技术
·基于Visual Basic快速开发现场电视监控系统
·PBX濒临被取代的危机—论程控交换机的生存与发展
·ASP技术访问WEB数据库 2
网友点评:
 
会员名称:
密码:匿名 ·注册·忘记密码?
评论内容:
(最多300个字符)
  查看评论
友情提醒:
 1.库中的资料大都来自互联网、网友上传、各类书籍,在录入的过程中难免会出现错误,恳请网
 友来信指正!
 2.如果网友在本库中未能找到所需要的材料,请登陆到我们的论坛《招考学习网》版块!
 3.考友想加入招考学习网的编辑部,请发信到XueXiWang#Gmail.com(#改为@)附带个人简历
 4.如需转载请注明出处及作者,谢谢合作!
 5.如果您有更好的建议或意见请EMAIL:XueXiWang#Gmail.com (#改为@)
 6.凡标题中有注有“[NO]”字样均不含答案且答案整理中.
 7.如本库中转载文章涉及版权等问题,请相关网站或作者在两周内发邮件通知(EMAIL:  XueXiWang#Gmail.com (#改为@))我们,我们接到通知后立即删除该文章及链接!
你问我答 更多>>