首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VB >

哪位高手有MAPI控件的参考资料

2012-02-07 
谁有MAPI控件的参考资料能有各个属性、方法等的解释和实例,最好有实例代码,哈哈。初学,单看语法结构还是不会

谁有MAPI控件的参考资料
能有各个属性、方法等的解释和实例,最好有实例代码,哈哈。

初学,单看语法结构还是不会用,拜托了。

[解决办法]
使用 MAPI 控件


消息处理应用程序接口 (MAPI) 控件,可用于创建具有电子邮件功能的 Visual Basic 应用程序。MAPI 是一系列的核心系统部件,它们可将任何用于电子邮件或工作组的应用程序,和适应 MAPI 的消息服务天衣无缝地连接起来。例如,通过使用 MAPI 驱动程序,Microsoft Exchange 消息系统可被连接到绝大多数私用或公用电子邮件系统中。

在 Visual Basic 中,MAPI 控件可用于与基本的消息子系统进行交互。要使用这些控件,则必须先安装适应 MAPI 的电子邮件系统,比如 Microsoft Exchange。基本的消息服务已由工作组环境提供了,比如说,在 Windows 95 或 Windows NT 环境下运行的 Microsoft Exchange 服务器。

使用 MAPI 控件包括两个步骤:建立 MAPI 会话,然后使用各种属性和方法访问和管理个人的收件箱。比如,创建并发送消息、加上附加文件、验证电子邮件系统地址簿中的收件人地址,等等。

MAPISession 控件登录并建立 MAPI 会话。它也可用于退出 MAPI 会话。MAPIMessages 控件包含了完成上面所说的消息系统功能所需的所有属性和方法。

MAPI 控件在运行时是不可见的。另外,这些控件不具有任何事件。只有通过设置适当的属性,或指定适当的方法来使用它们。

注意 如果要运行使用了 MAPI 控件的程序,则需要保证已经正确安装了 32 位的 MAPI DLL,否则就不能完成象 SignOn 之类的 MAPI 功能。例如,为了正确使用 MAPI 功能,在 Windows 95 中,安装系统时必须同时安装 Exchange,或者在“控制面板”中单独安装。

用途
在应用程序中加入消息系统功能。


创建功能完备的电子邮件应用程序。 
使用 MAPISession 控件
MAPISession 控件用于登录和退出一个 MAPI 会话。假如已存在 MAPI 服务,那么用 MAPISession 控件进行登录只是提供注册用户的姓名和密码。MAPISession 控件将确定操作系统中的电子邮件设置,并调用基本的消息子系统(电子邮件服务器)。

MAPISession 控件



设置 MAPISession 的属性
在设计时可用 MAPISession 的“属性页”设置 MAPISession 的属性。用鼠标右键单击 MAPISession 控件,并单击“属性”以显示“属性页”对话框。

在设计时设置 MAPISession 的属性



UserName 和 Password 属性被用来向基本的消息系统提供合法的登录信息。可以在设计时设置这些属性,也可以在运行时向用户提示输入这些属性。在需要向用户提供基本的电子邮件系统的登录对话框时,请将 LoginUI 属性设置为 True。如果不存在这样的对话框,则忽略该属性。可以创建自定义的对话框提示用户输入这些信息。

NewSession 属性指定是否需要建立新的电子邮件会话。如果已经建立了合法的会话,通过设置 NewSession 属性可使两个会话并发运行。

DownloadMail 属性指定在当前会话开始时,是否自动下载该用户的电子邮件。将该值设置为 True,将把该用户的所有电子邮件下载到其收件箱。根据电子邮件系统的速度和接收的电子邮件数量,该操作有可能是很耗时的操作。通过将该属性设置为 False,用户可以选择是否等到以后再下载电子邮件,或者设置自动下载电子邮件的时间间隔。

SignOn 和 SignOff 方法
设置了 UserName 和 Password 属性后,就可以在运行时使用 SignOn 方法启动 MAPI 会话了。

例如:

mpsSession.SignOn

会话建立后,该会话的句柄被保存在 SessionID 属性中。根据 NewSession 属性的值,该会话句柄可能指向新创建的会话,也可能指向已经存在的会话。

要终止会话,请使用 SignOff 方法。

注意 Action 属性也可用于登录和退出 MAPI 会话。然而,建议使用 SignOn 和 SignOff 方法。Action 属性只是用来保持与早先版本的 Visual Basic 兼容。

SessionID 属性
用 SignOn 方法成功地建立了消息处理会话后,SessionID 属性将返回一个唯一的消息处理会话句柄。SessionID 的值可被 MAPIMessages 控件用来创建与合法消息处理会话的关联。按照缺省规定,该值为 0。

使用 MAPIMessages 控件
使用 MAPISession 控件在消息处理会话中登录后,就可以使用 MAPIMessages 控件接收、发送或阅读收件箱中的消息了。该收件箱是在登录时指定的。

MAPIMessages 控件提供了完成基本电子邮件任务的属性和方法。这些基本任务有:撰写一条消息、将其发送给收件人、检查收件人地址是否有效,或者附加上一个文件。

MAPIMessages 控件



在绝大多数情况下,MAPIMessage 控件用于为应用程序提供与电子邮件兼容的特定功能。例如,需要在应用程序自动创建了报表后,向工作组发一个通知消息。换句话说,可以在自编的应用程序中加入与电子邮件功能,而无需创建完备的电子邮件应用程序。

不过,用 MAPI 控件同样能够创建非常强大的,具有电子邮件和工作组功能的应用程序。

示例应用程序:VBMail.vbp
下面的示例演示了 Visual Basic 中 MAPI 的基本用法。要知道 MAPI 控件属性和方法的更详尽用法,请参考 VBMail.vbp 示例应用程序,该示例应用程序列在 Samples目录中。

注意 用 OLE 消息处理技术也可以将 MAPI 功能加入自编的应用程序中,有关 OLE 消息处理的消息可以在 Microsoft Exchange Microsoft Exchange Software Development Kit 中找到。

与 SessionID 属性相关联
MAPIMessages 控件的 SessionID 属性包含了 MAPISession 控件的 SessionID 属性返回的消息处理会话句柄。要使 MAPIMessages 控件与有效的消息处理会话相关联,就需要将该属性设置为成功登录的 MAPISession 控件的 SessionID。例如:

mpmMessage.SessionID = mpsSession.SessionID

只有与有效的 MAPI 会话相关联,才能使用 MAPIMessages 控件并访问消息。

访问消息
成功登录到 MAPI 会话后,就可以访问注册用户的收件箱了。注册用户由 MAPISession 控件的 UserName 和 Password 属性指定。收件箱是消息的仓库。收件箱被打开时,创建两个缓冲区:撰写缓冲区和阅读缓冲区。

阅读缓冲区由从用户的收件箱中得到的编了号的消息集合构成。MsgIndex 属性用来访问该集合中的每条消息,第一条消息的编号值为 0,然后依次加一,直到集合的末尾。

该消息集合是用 Fetch 方法建立的。该集合包括所有 FetchMsgType 类型的消息,并根据 FetchSorted 属性的指定进行了排序。FetchMsgType 属性的值由基本的消息系统控制。FetchSorted 属性可被设置为按照接收消息的顺序,或按照用户收件箱指定的顺序,将消息加入消息集合(阅读缓冲区)。已经阅读过的消息,可通过设置 FetchUnreadOnly 属性,确定是包括在消息集合之中,还是排除在消息集合之外。

用户不能修改阅读缓冲区中的消息,但用户可以将它们复制到撰写缓冲区进行修改。

消息可在撰写缓冲区中创建和编辑。当 MsgIndex 属性设置为 -1 时,撰写缓冲区有效。很多消息操作只在撰写缓冲区中才有效。比如:发送消息、保存消息或删除收件人和附件等操作。

撰写和管理消息
管理消息是 MAPIMessages 控件的最基本的功能。撰写、发送、接收和删除消息等操作,通过使用对应其基本功能(合并、复制、删除等等)的方法完成。下表列出了应用于消息的 MAPIMessages 方法:



方法 描述 
Compose 撰写新的消息 
Copy 将当前编号的消息复制到撰写缓冲区 
Delete 删除一条消息、收件人或附件 
Fetch 从收件箱中选定的消息中创建消息集合 
Forward 转发消息 
Reply 答复消息 
ReplyAll 答复消息的所有收件人 
Save 保存撰写缓冲区中的当前消息 
Send 发送消息 


要对一条消息进行操作,必须首先用 MsgIndex 属性选中它。由 MsgIndex 属性标识的消息被称为当前编号的消息。

在 MsgIndex 属性选中某条消息之前,不能设置其它消息属性。消息编号的有效范围是 -1 到 MsgCount -1(MsgCount 属性返回消息集合中的消息总数%E
F??。创建新的消息后,MsgIndex 属性的值被设置为 -1。

撰写消息
用 Compose 方法可以创建新消息。使用 Compose 方法后,撰写缓冲区被清空,并且 MsgIndex 属性被设置为 -1。

'撰写新消息
mpmMessage.Compose

完成消息需要如下几步:确定消息的收件人,选择主题以及编写消息。

确定消息地址
要设置收件人的姓名和地址,可使用 RecipDisplayName 和 RecipAddress 属性。其中 RecipDisplayName 是收件人的有效姓名,比如“Richard Tull”。RecipAddress 属性包含了收件人的电子邮件地址“richtull”,如下所示。

'确定消息地址
mpmMessage.RecipDisplayName = "Richard Tull"
mpmMessage.RecipAddress = "richtull"

本地工作组以外的收件人地址(比如通过 Internet 发送给其它公司某人的消息)需要完整的 Internet 电子邮件地址:“richtull@littlemag.com”。

验证收件人姓名
收件人姓名在发送消息时,用 ResolveName 方法,参照电子邮件系统中注册的用户列表进行验证。本地工作组之外的收件人姓名的检查,由基本的消息系统用不同方法进行验证。

下面的示例调用 ResolveName 方法验证了收件人的有效电子邮件名称,并将 AddressResolveUI 属性设置为 True。

'验证收件人姓名
mpmMessage.AddressResolveUI = True
mpmMessage.ResolveName

发送消息时,如果收件人地址有二义性或无效,可以通过将 AddressResolveUI 属性设置为 True 以显示对话框输入详细情况,或设置为 False 以产生错误。如果找到了较接近的地址,输入详细情况的对话框将提供一个替换的地址。

消息主题和文本
MsgSubject 属性指定了消息的主题行。包括 Null 字符在内,在主题中最多可以输入 64 个字符。

该消息的消息体包含在 MsgNoteText 属性中。在入站 (inbound) 的消息中,每段消息由回车换行符 (vbCrLf) 结束。出站 (Outbound) 的消息中,每段消息可以由回车符 (vbCr)、换行符 (vbLf),或者回车换行符结束。

'创建消息
mpmMessage.MsgSubject = "Status Report"
mpmMessage.MsgNoteText = "Build successful!"

发送消息
要发送消息,可使用 Send 方法。Send 方法在发送消息过程中允许与用户进行交互,或者不交互。将该值设置为 True,将显示基本的电子邮件系统(比如 Microsoft Exchange)的撰写消息对话框。将其设置为 False 则在发送消息过程中,不显示撰写消息对话框。在下面的示例中,当发送消息时,没有提示用户进行交互:

'发送消息
mpmMessage.Send = False

处理文件附件
用文件附件属性可在传出的消息中添加文件附件。在下表中列出了这些属性:

属性 描述 
AttachmentCount 返回与当前编号消息相关联的附件总数。 
AttachmentIndex 设置当前编号的附件。 
AttachmentName 指定当前编号文件附件的名称。 
AttachmentPathName 指定当前编号文件附件的完整路径。 
AttachmentPosition 指定在消息体中当前编号的附件位置。 
AttachmentType 指定当前编号文件附件的类型。 


要在传出的消息中添加附件,可以使用 AttachmentPathName 属性指定该文件的名称和路径。例如:

'添加附件
mpmMessage.AttachmentPathName = "c:\Status _ 
Report.doc"

如果路径名错误或空,将会产生错误。

只需简单地指定 AttachmentPathName 属性即可与消息一同发送附件。这时,该附件的文件名将显示在消息体中,并将附件放置在消息的开头。

AttachmentName 属性可用于为文件附件指定不同的名称。如果没有设置这个属性,在消息体中将显示该文件的真实名称。

AttachmentPosition 属性被用来指定附件在消息体中的位置。按照缺省规定,该值是“0”,这时附件放置在消息体的开始位置。要将附件放置到消息的末尾,需要计算消息体中的字符数。例如,在长度为五个字符的消息体中,将该值设置为 4,即可将附件放到消息的末尾(消息体占据字符位置 0 到 4)。

在同一消息中,两个附件不能放置在相同位置上。也不能将附件放置到消息体的结尾或结尾之后。可以在消息体的末尾加上一个多余的空格或 vbCrLf 字符,然后将 AttachmentPosition 属性设置为比 MsgNoteText 属性的长度少一的值。

管理消息
剩下的许多 MAPIMessages 控件的属性和方法,可用来管理消息,就象在功能完备的电子邮件应用程序中所做的那样。

通过访问阅读缓冲区中的消息,可以对一个或一组消息进行排序、删除或转发操作。下表列出了可用于管理消息的属性:

属性 描述 
MsgConversationID 指定当前编号消息的对话线程标识符。 
MsgCount 返回当前消息处理会话期间在消息集合中的消息总数。 
MsgDateReceived 返回接收到当前编号消息的日期。 
MsgID 返回当前编号消息的标识字符串。 
MsgIndex 指定当前编号消息的编号。 
MsgOrigAddress 返回当前编号消息的发出者的电子邮件地址。 
MsgOrigDisplayName 返回当前编号消息的发出者的姓名。 
MsgRead 返回指出该消息是否已被阅读过的 Boolean 表达式。 
MsgReceiptRequested 指定当前编号的消息是否需要发回执。 
MsgSent 指定当前编号的消息是否已被发送到电子邮件服务器进行分发。 
MsgType 指定当前编号消息的类型。 


使用地址簿
电子邮件系统的地址簿中包含了在电子邮件系统注册的每个用户的地址信息。该地址簿是一个对话框,在该对话框中用户可以浏览和验证收件人的地址。地址簿属性可用于设置和修改地址簿的元素。

Show 方法
用 Show 方法可以显示电子邮件系统的地址簿。Show 方法可被设置为显示地址簿,或显示收件人详情对话框。

按照缺省规定,该值被设置为 False,这时使用 Show 方法将显示地址簿对话框。

要显示收件人详情对话框,可将该值设置为 True。在该对话框中显示多少信息要取决于所使用的电子邮件系统。至少收件人的姓名和地址会被显示出来。

地址簿属性
地址簿属性可用于设置和修改电子邮件系统的地址簿中的元素。下表列出了这些属性:



属性 描述 
AddressCaption 指定在地址簿顶部出现的标题。 
AddressEditFieldCount 指定在地址簿中为用户显示哪些编辑控件。 
AddressLabel 指定地址簿中“到”编辑控件的外观。 
AddressModifiable 指定用户是否可以修改地址簿。 
AddressResolveUI 指定在确定地址过程中,处理收件人姓名时,是否显示对话框。 


所有的地址簿属性,在设计时都可通过 MAPIMessages 控件的“属性页”对话框进行设置。

在设计时设置 MAPIMessages 的属性



在设计时设置地址簿属性,可以指定地址簿对话框的显示和功能选项。例如,可用 AddressCaption 属性改变地址簿对话框的标题。

热点排行