一.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软、硬件环境中运行并通过。
,自由广告区 |
分类导航 |
邮件新闻资讯: IT业界 | 邮件服务器 | 邮件趣闻 | 移动电邮 电子邮箱 | 反垃圾邮件|邮件客户端|网络安全 行业数据 | 邮件人物 | 网站公告 | 行业法规 网络技术: 邮件原理 | 网络协议 | 网络管理 | 传输介质 线路接入 | 路由接口 | 邮件存储 | 华为3Com CISCO技术 | 网络与服务器硬件 操作系统: Windows 9X | Linux&Uinx | Windows NT Windows Vista | FreeBSD | 其它操作系统 邮件服务器: 程序与开发 | Exchange | Qmail | Postfix Sendmail | MDaemon | Domino | Foxmail KerioMail | JavaMail | Winwebmail |James Merak&VisNetic | CMailServer | WinMail 金笛邮件系统 | 其它 | 反垃圾邮件: 综述| 客户端反垃圾邮件|服务器端反垃圾邮件 邮件客户端软件: Outlook | Foxmail | DreamMail| KooMail The bat | 雷鸟 | Eudora |Becky! |Pegasus IncrediMail |其它 电子邮箱: 个人邮箱 | 企业邮箱 |Gmail 移动电子邮件:服务器 | 客户端 | 技术前沿 邮件网络安全: 软件漏洞 | 安全知识 | 病毒公告 |防火墙 攻防技术 | 病毒查杀| ISA | 数字签名 邮件营销: Email营销 | 网络营销 | 营销技巧 |营销案例 邮件人才:招聘 | 职场 | 培训 | 指南 | 职场 解决方案: 邮件系统|反垃圾邮件 |安全 |移动电邮 |招标 产品评测: 邮件系统 |反垃圾邮件 |邮箱 |安全 |客户端 |