用PB编写邮件应用程序

原创 2001年07月06日 09:53:00
 

  由于受到强大数据库功能的掩盖,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的邮件下载到他的收件箱中。

217910__b1301t01.jpg图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事件代码为:

217910__b1301t02.jpg图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中调试通过,大部分代码可以直接利用

PowerBuilder开发简单计算器

简单计算器 指的是用户每输入完一个完整的表达式(一元或者二元)就计算。  1、设计好界面 2、在Declare Instance Variable里定义三个变量 decimal add1  //存...
  • acmjk
  • acmjk
  • 2015年03月05日 15:43
  • 1333

socket应用 用C语言编写发送邮件程序

原文:http://blog.csdn.net/sophisticated/article/details/3893297 每次都得登录网站,打开邮箱才能发送邮件,就想到如何使用程序来自动地发送...
  • aa512690069
  • aa512690069
  • 2013年07月09日 23:46
  • 2094

HTML邮件模板编写技巧

发送html邮件的建议:用style写内联的CSS;少用图片;用table实现左右布局或者更复杂的布局;用background元素设置背景图片等。 几乎每个会员制网站都需要通过后台发...
  • xfcy1990
  • xfcy1990
  • 2016年05月18日 23:28
  • 1198

详解Asp.Net定时发送邮件方法

用.net发送邮件,总结起来有以下那么三种: (1)做一个winform 来定时发邮件。然后通过windows计划任务,设置为指定时间,每次自动运行,运行完毕后自动关闭。 (2)用sqlserve...
  • kirawoo
  • kirawoo
  • 2015年06月26日 13:55
  • 1901

linux 下如何编写一个完整的应用程序!

步骤如下: 一:编写源码:本文末尾是我自己编写的一个简单的按键应用程序keyFunction.c    二:编译源码:在linux环境下,用对应的toolchain 编译源码,生成应用程序的可执行文件...
  • zchill
  • zchill
  • 2016年10月14日 17:37
  • 2950

PowerBuilder连接数据库

什么是PowerBuilder(后面简称PB)?       这是个奇怪的问题,说实话,在这次毕业设计之前,我也不知道什么是PowerBulider(当然,不排除我见识短浅)。百度百科是这样解释的:...
  • lu930124
  • lu930124
  • 2015年03月17日 21:16
  • 2650

使用PowerBuilder同时访问多个数据库

随着网络的延伸和信息系统的不断开发,系统集成面临着如何将分布在不同服务器上的数据库系统集成到一起的问题。某个客户应用可能需要在同一窗口同时访问两个服务器上的两个不同种数据库,PowerBuilder为...
  • happymagic
  • happymagic
  • 2014年11月21日 14:45
  • 913

Android学习笔记---开发与运行(卸载)第一个ANDROID应用--Helloworld

开发与运行(卸载)第一个ANDROID应用 1.第一个android程序:HelloWorld   新建:android Project   填写project name,选择安卓平台 2.a...
  • lidew521
  • lidew521
  • 2013年03月03日 19:06
  • 1041

PB-数据窗口缓冲区与数据修改状态

PB-数据窗口缓冲区与数据修改状态   1--缓冲区的介绍   在应用程序运行时,用户对数据窗口进行的操作情况是很复杂的,删除、插入、修改等操作有可能都会发生。记录哪些数据修改过、哪些数据需要...
  • tlammon
  • tlammon
  • 2016年03月01日 15:55
  • 3101

MFC发送邮件C语言版

实验四发送邮件 1、实验目的: 要求学生掌握Socket编程中流套接字的技术,以及邮件的发送 2、实验内容: i.              要求学生掌握利用Socket进行编程的技术 ii...
  • qq_20916555
  • qq_20916555
  • 2016年04月17日 19:03
  • 659
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:用PB编写邮件应用程序
举报原因:
原因补充:

(最多只允许输入30个字)