基于vc与word、outlook对象模型的email实现
摘要: 分析了三种不同的实现邮件发送方法, 通过vc可视化开发环境,结合word及outlook对象模型,实现将word格式以及其他文件格式的文件作为email的邮件体,从而利用word的强大编辑能力构成与发送丰富多彩的邮件。
关键词:SMTP协议 MAPI编程接口 对象模型 动态链接库 电子邮件
随着信息技术的飞速发展,电子邮件作为一种通讯手段,在日常生活和办公领域中发挥着巨大的作用,一些行业需要以邮件为载体,实现信息的实交互、反馈、统计等功能。Visual c++作为功能强大的可视化编程工具正在日益得到广泛的应用。使用vc开发可以实现多线程,支持面向对象、模块化、等特点,大大提高软件的开发效率,同时结合 word、excel、outlook等office 对象模型,从而有望实现含多格式邮件体的邮件定时、批量的发送及其信息反馈的自动处理。本文提出了一种利用vc实现邮件发送的方法,并且实现了将word、html文档插入到邮件体,从而达到即有web网页的生动,又具有邮件的快捷、方便的效果。
1. 基于vc的email功能实现
在vc环境下有三种方法可以实现邮件的发送,下面分别介绍:
(1):使用SMTP进行设计。电子邮件系统所应用的传输协议包括SMTP和POP协议。SMTP即简单邮件传输协议,属于TCP/IP协议族,.使用SMTP设计基于以下通讯模型:针对用户的邮件请求,发送SMTP与接受SMTP之间建立一个双向通道。一旦传送通道建立,SMTP发送者发送mail命令指明邮件发送者。如果SMTP接受者接受,则返回OK应答。SMTP发送者再发出RCPT命令确认邮件是否接受到。故在vc环境下,基于SMTP协议的邮件发送流程为:
SMTP协议也有自身的局限性,它只能传输ASCAII文本文件,但对于一些二进制数据文件需要进行编码后才能传输。
(2)使用MAPI进行设计。MAPI是一系列的编程接口规范,而不是应用程序、动态链接库或系统服务程序。它们可以将任何用于电子邮件或工作组的应用程序与适应MAPI的消息服务天衣无缝地连接在一起。在这个规范中详细说明了用户的应用程序和服务提供应用程序是如何通过API实现交互的。MAPI体系包括以下几部分:①MAPI的用户应用程序接口。包括简单的MAPI、CMC9(通用信报调用)、扩展MAPI和Active/OLE报文接口。②MAPI支持的客户应用程序的类型。包括报文感知应用程序、报文激活应用程序和基于报文的应用程序。③MAPI的服务供应程序。包括地址提供者、报文提供者、传输提供者。使用vc开发程序首先需要装载动态链接库文件MAPI32.DLL,然后是得到程序将会使用到的各个函数的地址常用的函数为:MAPILogon(建立会话函数)、MAPILogoff(结束会话函数)、MAPIFreeBuffer(释放缓冲内存函数)、MAPISendMail(信报发送函数)。通过调用以上函数即可实现邮件的发送。
由于MFC对MAPI进行了很好的封装,使开发信报应用程序的工作大大简化,同时MAPI提供了大量的函数和接口,可以提供丰富的信报功能,然而却很难在邮件体里插入多种格式的文件,只能包含在附件里,对于某些基于邮件的市场活动等,很难吸引邮件接受者的注意,故而达不到满意的效果。
(3)使用outlook对象模型进行设计。使用outlook对象模型可以在vc开发环境下实现outlook所有的信报功能,结合vc语言的多线程、模块化设计与outlook的强大的信报处理功能,从而可以实现邮件的自动、定时发送,并可以实现多格式邮件体,在实现过程中相对以上两种方法更加简单易行,本文重点介绍如何利用outlook来实现。
2. Outlook、word对象模型的简单介绍
Microsoft office 通过一个对象的等级系统和被称为对象模型的对象集合,将其功能提供给VBA语言,一个程序包含两个基本要素:内容和功能。内容指的是程序所包含的信息,也就是文档等信息;功能指的应用程序内容的所有方式,例如打开、关闭、删除等。组成程序的内容和功能以离散的单元提交给VBA,称为对象。大部分情况下,程序提供给VBA的对象集同所有工作需要的对象对应。程序提供的对象根据相关性以等级关系组织起来。最高级对象为Application,在其底下又有许多的子对象,如Excel中的Workbook对象,word中的Document对象,通过使用对象的属性和方法,可以使用office提供的所有功能。
以下简单介绍在本文使用的对象。
(1) outlook对象模型:
application对象。该对象是outlook的核心对象,即根对象,它提供了对其它所有对象的访问。
Namespace对象。该对象是outlook数据源的一个抽象根,虽然该对象不被使用,它还是提供了对在对象树底层上排在自己下面的对象的访问。
Item对象。Outlook中最基本的信息单元。本文将使用mailitem对象。
Explorer对象。文件夹中项目的可视化表示,outlook用explorer显示item对象。
Impector对象。用来显示项目的outlook窗体。Inspector之于项目,如同explorer之于文件夹。
(2) word对象模型
application对象。 Word的根对象。
Document对象。该对象为word中的文档对象,相对于word中的某一具体文档。
Range对象 document对象的某一特定区块,可以通过不同的参数指定,比如一个段落、一个表格等。
3. 使用outlook对象模型进行设计