首页 | 编程语言 | 网站建设 | 游戏天堂 | 冲浪宝典 | 网络安全 | 操作系统 | 软件时空 | 硬件指南 | 病毒相关 | IT 认证
软讯网络 > 冲浪宝典 > 网络资源 > 用PB编写邮件应用程序
【标  题】:用PB编写邮件应用程序
【关键字】:程序,应用,PB,PB
【来  源】:网络

用PB编写邮件应用程序

  由于受到强大数据库功能的掩盖,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事件的代码为:

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

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

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

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

4.结束邮件会话

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

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

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

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

PB的可执行文件所需的环境DLL:【上一篇】
用PB生成GUID解决主键重复:【下一篇】
【相关文章】
  • PB的可执行文件所需的环境DLL
  • PB中实现数据窗口动态排序的三种方法
  • 在PB中实现系统热键功能的新方法
  • PBr连接Sybase-SQLServer的注意事项
  • 如何使PB窗口总在最上层
  • 如何在PB中创建SQL SERVER数据库设备与数据库
  • PB中实现图片按钮的mousemove事件
  • 用PB如何调用WINDOWS的API(以播放声音为例)
  • 在run语句之后判断该程序是否执行完毕
  • FALSH的按钮控制PB中的数据窗口
  • 【随机文章】
  • Linux常用命令列表(翻译)~~4.2
  • 无显示器、无键盘、无鼠标的Linux PC服务器
  • Painter 7手绘实例《速写篇》(2)
  • TCPSERVER参数说明
  • 色彩设计中的哲学
  • acos( ) 【C语言库函数源代码】
  • 如何在SqlServer与oracel中进行分页的讨论!
  • 网页播放器代码
  • Effective C++之48
  • 在Debian中安装设置输入法
  • 【相关评论】
    没有相关评论
    【发表评论】
    姓名:
    邮件:
    随机码*
    评论*
          
    |  首 页  |  版权声明  |  联系我们   |  网站地图  |
    CopyRight © 2004-2007 软讯网络 All Rigths Reserved.