那么,在PB中能否实现电子邮件的发送和传输呢?答案是肯定的。作为前沿的数据库开发工具PowerBuild自然不会忘记在她的集成里面为开发者提供一套解决办法。
既然如此,如何来实现呢?首先,在开始之前我们先来初步领略一下程序的运行效果如何。见图
![]() |
我们可以看到画面上有平时我们发送的收件人,邮件标题,正文,附件等四项,这些已足够满足当前的需求了。
在解决问题之前先来认识一下PB中有关邮件的四个对象:
1、 邮件文件描述对象mailFileDescription:包含了邮件消息中附加文件的一些信息。
2、 邮件消息对象mailMessage:包含了特定邮件消息的数据。其中包括我们需要的邮件接收日期,邮件主题,邮件内容,附件文件等。
3、 邮件接收者对象mailRecipient:包含了邮件收件人的姓名,邮箱地址等数据。
4、 邮件会话对象mailSession:用于建立MAPI会话。
注:
MAPI:Message API,简单的说,就是为了帮助你交互使用各种不同的信报系统开发应用程序,或者为了在你的应用程序中增加基本的电子邮件功能,Microsoft为你提供了信报应用程序接口MAPI。
本文所介绍的方法和提供的程序就是基于这四个对象的操作来实现邮件的发送和接收。现在我们就针对邮件的发送和接收来分别做一下讨论。
第一部分:邮件发送
要想成功发送一封真正有意义的邮件首先应该知道邮件的基本信息是什么,即要有收件人地址、邮件标题、邮件正文甚至附件等。从上面的基本概念介绍中我们可以知道要正确设置这些属性只有依靠邮件消息对象mailMessage。由于该对象是个PouwerBuilder的系统结构,所以我们可以像声明其他变量一样声明该对象的一个实例。例如,
mailMessage mMsg
声明了之后我们就可以来访问和初始化该邮件消息对象的各个属性值。
一、 设置邮件标题
即邮件主题,设置方法:
mMsg.Subject = "邮件主题"
很简单是吧,只要给邮件消息对象的Subject属性赋值就行了,它指明当前邮件的主题行,该信息显示在邮件的消息标题中。因为该属性是String类型,因此在程序中最多可以包含1024个字符,当然任何一个邮件发送者是不会在标题栏中写上这么多的字符。
二、 撰写邮件正文
方法:
| mMsg.NoteText = "输入邮件正文…" |
关于这个属性没什么好说的,只是指明邮件的内容,但要注意前面的字符字数限制,当有正文太长的时候应该考虑用附件传送。限制的理由仅仅是因为我们在程序中用双引号进行赋值。另外,附件所带的文件我们也很容易用数据窗口来导出,并可以很方便的导入数据窗口中。
三、 添加邮件的附件
这可是本文的重点,我费好大的劲才将它搞定。实现方法:
| mMsg.AttachmentFile[1] = mFd |
邮件消息对象mailMessage用属性AttachmentFile[]来指明当前邮件的附件。它是个邮件文件描述对象的数组形式。可以用来指明多个附件,依次存放在从下标1开始的数组变量里,例如
| mMsg.AttachmentFile[1] = mFd // 指明附件一 …… // 重新设置mFd mMsg.AttachmentFile[2] = mFd // 指明附件二 …… // 重新设置mFd mMsg.AttachmentFile[n] = mFd // 指明附件三 |
同时在指明附件之前你还必须在邮件文件描述对象mFd的属性Pathname和Filename中指定附件的具体位置和文件名。例如,
| mailFileDescription mFd mFd.Filename = "D:\Attach.Text" mfd.Pathname = "D:\Attach.Text" |
注意这两个属性的值应该是相同的。如果按照邮件文件描述对象mailFileDescription的属性说明,把Pathname和Filename属性分别设置成如下文件路径和文件名的形式
| mailFileDescription mFd mFd.Filename = "Attach.Text" mfd.Pathname = "D:\" |
则在调式应用程序的时候我们发现邮件发送函数总是返回-1,无论如何也发送不出去。真不知道PB的这两个属性有什么区别(要是你知道的话别忘了告诉我一声)。所以有必要提醒大家要是在编程遇到与此类似问题不妨也像这样多试试,尤其在有文件名和路径的情况下。







