分享
 
 
 

用PB编写邮件应用程序

王朝other·作者佚名  2006-01-08
窄屏简体版  字體: |||超大  

由于受到强大数据库功能的掩盖,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中调试通过,大部分代码可以直接利用

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有