分享
 
 
 

在VB、VFP应用系统中收发邮件

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

在VB、VFP应用系统中收发邮件

E-mail是Internet/Intranet网上通信的最主要的方式之一,充分利用E-mail 的功能可以极大地提高企业的工作效率,减轻用户的工作负担。Windows 95中提供了一个名为Exchange的电子邮件客户程序,它包含了收件箱、发件箱、收发消息、消息优先级等功能,广泛支持超文本消息、收发传真和Internet邮件等内容,可以在LAN、Microsoft Fax、远程邮件、Internet等多种软件环境中工作。在VFP、VB开发的应用系统中结合Exchange的邮件服务功能,可以使您的应用系统功能更强大、服务更完善、使用更方便。下面介绍VB、VFP的MAPI控件以及在VB、VFP应用系统中使用这些控件收发E-mail的方法。

一.MAPI控件概述

MAPI(通信应用程序接口)控件,即MSMAPI32.OCX,包括两个OLE控件:MAPISession(MAPI工作期)控件和MAPIMessage(MAPI消息)控件。MAPISession控件的功能是负责建立会话、取消会话的一个MAPI工作期。MAPIMessage控件则提供了发送、接收等所有对电子邮件进行处理的功能。

MAPISession控件用来注册一个新工作期和注销当前工作期。注册时,首先

用MAPISession控件的SignOn方法建立与E-mail服务器的会话连接,显示完注册对话框后,SessionID属性包含了刚注册的MAPISession的句柄。此句柄最终必须传递给MAPIMessage控件,在结束当前MAPISession工作期之前,必须先注销该工作期。然后再用MAPIMessage控件的SessionID属性同有效的会话联系起来,执行一系列消息系统函数,实现收发邮件的功能。

二.MAPI控件的主要属性

(1)MAPISession控件的属性:

Action属性:当MAPISession控件被激活时,该属性将决定执行什么操作。

LogonUI属性:该属性指定是否显示注册对话框。当其值为“真”时,则出

现一个对话框提示新用户输入用户名和口令;当其值为“假”时,则不显示对话框。

SessionID属性:返回当前的消息会话句柄。指定SignOn方法时,可以设置该属性的值。使用MAPIMessage控件处理消息时,需要使用此会话句柄,其缺省值为0。

SignOn方法:将用户登录到UserName和Password属性所指定的帐户中,并将会话句柄存储到属性SessionID中。

SignOff方法:结束消息会话,从UserName和Password属性所指定的帐户中

退出。

(2)MAPIMessage控件的属性:

Action属性:当MAPIMessage控件被激活时,该属性决定将执行什么操作。

SessionID属性:存储由MAPISession控件的SessionID属性返回的消息会话句柄。

FetchSorted属性:在用收件箱中的消息填充消息集合时,指定或返回消息的排序。当其值为“真”时,按接收消息的顺序向消息集合添加消息;当其值为“假”时,由用户收件箱中的排序添加消息。

FetchUnreadOnly属性:决定是否将消息集合中的消息限定为未读消息。当其值为“真”时,只向消息集合添加FetchMsgType属性指定的未读消息;当其值为“假”时,添加收件箱中适当类型的全部消息。

MsgCount属性:用于在消息工作期间返回存在于消息设置中的消息的总数。

MsgIndex属性:指定当前索引消息的索引编号。在索引改变时,所有消息的其它属性也随之改变,以反映索引消息的特征。索引号的范围是从-1到MsgCount-1。

MsgOrigDisplayName属性:返回当前索引消息的原始发件人的名字。

MsgOrigAddress属性:返回当前索引消息的原始发件人的邮件地址。

RecipDisplayName、RecipAddress、MsgSubject、MsgNoteText属性:分别指定当前索引的收件人姓名、收件人的邮件地址、主题、文本行,构成一条完整的消息。

Send方法:发送一条消息。它带有一个参数nDialog,当nDialog为“真”时,显示Exchange邮件系统的操作界面,由用户输入消息的各个部分,并将消息提交邮件服务器传送;当nDialog为“假”时,则不显示相应的操作界面,而将消息提交给邮件服务器。

Reply方法:响应一个消息。将当前索引的消息复制到构成缓冲区中,并将RE:加入标题行的开始,同时将MsgIndex属性设置为-1。

Delete方法:删除一个消息、收件人或附件。

Compose方法:构成一条消息。

Fetch方法:由收件箱中选择的消息创建一个消息集合。

三.应用实例

★应用实例一:用VB 5.0的MAPI控件收发邮件。

1. 插入MAPI控件的方法:

在VB 5.0主菜单的“工程”项中选择“部件(0)”,在弹出的控件栏中,双击“Microsoft MAPI Control 5.0”项,按“确定”键返回。那么,在窗体工具箱中就有了上述控件。

2.建立含有如下控件的窗体:

控件 NAME CAPTION

主窗体 frmMail 用VB 5.0的MAPI控件收发邮件

MAPISession控件 MailSess

MAPIMessage控件 MailMess

命令按钮 cmdNewMail 发件箱

命令按钮 cmdGetMail 收件箱

命令按钮 cmdExit 退出

子窗体 frmNewMail 发件箱

标签 label1 收件人:

标签 label2 主题:

文本框 TEXT1 '输入收件人的电子邮件地址

文本框 TEXT2 '输入文本的主题

文本框 TEXT3 '输入文本内容

命令按钮 MailSend 发送邮件

子窗体 frmGetMail 收件箱

标签 label1 发件人:

标签 label2 主题:

文本框 TEXT1 '发件人的电子邮件地址

文本框 TEXT2 '发来的文本主题

文本框 TEXT3 '发来的文本内容

命令按钮 cmdPrevious 向前

命令按钮 cmdNext 向后

输入主窗体“发件箱”按钮的程序代码:

Private Sub cmdNewMail_Click()

frmNewMail.Show

End Sub

输入主窗体“收件箱”按钮的程序代码:

Private Sub cmdGetMail_Click()

frmGetMail.Show

End Sub

输入主窗体“退出”按钮的程序代码:

Private Sub cmdExit_Click()

frmMail.MailSess.SignOff '断开连接

End

End Sub

输入frmNewMail子窗体“发送邮件”按钮的程序代码:

Private Sub MailSend_Click()

frmMail.MailSess.SignOn '建立连接

frmMail.MailMess.SessionID = frmMail.MailSess.SessionID

frmMail.MailMess.MsgIndex = -1

frmMail.MailMess.RecipDisplayName = Text1.Text

frmMail.MailMess.MsgSubject = Text2.Text

frmMail.MailMess.MsgNoteText = Text3.Text

frmMail.MailMess.Send (False)

frmMail.MailSess.SignOff

End Sub

输入frmGetMail子窗体装入的程序代码:

Private Sub Form_Load()

Dim mailIndex, mailCounts As Integer

frmMail.MailSess.SignOn

frmMail.MailMess.SessionID = frmMail.MailSess.SessionID

frmMail.MailMess.FetchSorted = True

frmMail.MailMess.FetchUnreadOnly = True

frmMail.MailMess.Action = 1

mailCounts = frmMail.MailMess.MsgCount

If mailCounts = 0 Then

Text3.Text = "收件箱中没有邮件!"

frmGetMail.cmdPrevious.Enabled = False

frmGetMail.cmdNext.Enabled = False

Else

frmGetMail.MailMess.MsgIndex = 0

frmGetMail.Text1.Text = frmMail.MailMess.MsgOrigAddress

frmGetMail.Text2.Text = frmMail.MailMess.MsgSubject

frmGetMail.Text3.Text = frmMail.MailMess.MsgNoteText

End If

End Sub

输入frmGetMail子窗体“向前”按钮的程序代码:

Private Sub cmdPrevious_Click()

mailIndex = frmGetMail.MailMess.MsgIndex

frmGetMail.MailMess.MsgIndex = mailIndex - 1

frmGetMail.Text1.Text = frmMail.MailMess.MsgOrigAddress

frmGetMail.Text2.Text = frmMail.MailMess.MsgSubject

frmGetMail.Text3.Text = frmMail.MailMess.MsgNoteText

If mailIndex = 0 Then

frmGetMail.cmdPrevious.Enabled = False

End If

End Sub

输入frmGetMail子窗体“向后”按钮的程序代码:

Private Sub cmdNext_Click()

mailCounts = frmGetMail.MailMess.MsgCount - 1

mailIndex = frmGetMail.MailMess.MsgIndex

frmGetMail.MailMess.MsgIndex = mailIndex + 1

frmGetMail.Text1.Text = frmMail.MailMess.MsgOrigAddress

frmGetMail.Text2.Text = frmMail.MailMess.MsgSubject

frmGetMail.Text3.Text = frmMail.MailMess.MsgNoteText

If mailIndex = mailCounts Then

frmGetMail.cmdNext.Enabled = False

End If

End Sub

★应用实例二:用VFP 5.0的MAPI控件收发邮件。

1. 插入MAPI控件的方法:

在VFP 5.0主菜单的“工具”项中选择“选项”,在弹出的控件栏中,双击“Microsoft MAPI Control 5.0”项,那么,在窗体工具箱中就有了上述控件。

2.建立含有如下控件的窗体:

控件 NAME CAPTION

窗体 frmMail 用VFP 5.0的MAPI控件收发邮件

MAPISession控件 MailSess

MAPIMessage控件 MailMess

命令按钮 command1 发件箱

命令按钮 command2 收件箱

命令按钮 command3 退出

输入“发件箱”按钮单击事件的程序代码:

thisform.MailSess.SignOn

thisform.MailMess.SessionID = thisform.MailSess.SessionID

thisform.MailMess.MsgIndex = -1

thisform.MailMess.RecipDisplayName = "zjport@public.jsinfo.com.cn"

thisform.MailMess.MsgSubject = "信件"

thisform.MailMess.MsgNoteText = "请给我发邮件!"

thisform.MailMess.Send (.F.)

thisform.MailSess.SignOff

输入“收件箱”按钮单击事件的程序代码:

thisform.MailSess.SignOn

thisform.MailMess.SessionID = thisform.MailSess.SessionID

thisform.MailMess.FetchSorted = .T.

thisform.MailMess.FetchUnreadOnly = .T.

thisform.MailMess.Action = 1

xx=''

for mm=0 to thisform.MailMess.MsgCount-1

thisform.MailMess.MsgIndex = mm

xx=xx+thisform.MailMess.MsgNoteText+chr(13)+chr(10)

endf

thisform.MailSess.SignOff

输入“退出”按钮的程序代码:

thisform.MailSess.SignOff

release thisform

上述程序只是给出用VB 5.0和VFP 5.0开发E-mail程序的简单案例,用户可以结合自己的实际情况,将上述程序修改、完善后,加入到自己的应用系统中去,使应用系统的功能更强大。

以上程序在同创P/200、中文WINDOWS 95、WINDOWS NT 4.0、Visual Foxpro 5.0、Visual Basic 5.0软、硬件环境中运行并通过。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
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- 王朝網路 版權所有