基于vc和wordoutlook对象模型email实现_第1页
基于vc和wordoutlook对象模型email实现_第2页
基于vc和wordoutlook对象模型email实现_第3页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、基于vc和wordoutlook对象模型email实现    摘要: 分析了三种不同的实现邮件发送方法, 通过vc可视化开发环境,结合word及outlook对象模型,实现将word格式以及其他文件格式的文件作为email的邮件体,从而利用word的强大编辑能力构成与发送丰富多彩的邮件。 关键词:SMTP协议   MAPI编程接口    对象模型    动态链接库   电子邮件 随着信息技术的飞速发展,电子邮件作为一种通讯手段,在日常生活和办公领域中发挥着

2、巨大的作用,一些行业需要以邮件为载体,实现信息的实交互、反馈、统计等功能。Visual c+作为功能强大的可视化编程工具正在日益得到广泛的应用。使用vc开发可以实现多线程,支持面向对象、模块化、等特点,大大提高软件的开发效率,同时结合 word、excel、outlook等office 对象模型,从而有望实现含多格式邮件体的邮件定时、批量的发送及其信息反馈的自动处理。本文提出了一种利用vc实现邮件发送的方法,并且实现了将word、html文档插入到邮件体,从而达到即有web网页的生动,又具有邮件的快捷、方便的效果。1      基于vc的ema

3、il功能实现在vc环境下有三种方法可以实现邮件的发送,下面分别介绍:(1):使用SMTP进行设计。电子邮件系统所应用的传输协议包括SMTP和POP协议。SMTP即简单邮件传输协议,属于TCP/IP协议族,.使用SMTP设计基于以下通讯模型:针对用户的邮件请求,发送SMTP与接受SMTP之间建立一个双向通道。一旦传送通道建立,SMTP发送者发送mail命令指明邮件发送者。如果SMTP接受者接受,则返回OK应答。SMTP发送者再发出RCPT命令确认邮件是否接受到。故在vc环境下,基于SMTP协议的邮件发送流程为: SMTP协议也有自身的局限性,它只能传输ASCAII文本文件,但对于一些二

4、进制数据文件需要进行编码后才能传输。(2)使用MAPI进行设计。MAPI是一系列的编程接口规范,而不是应用程序、动态链接库或系统服务程序。它们可以将任何用于电子邮件或工作组的应用程序与适应MAPI的消息服务天衣无缝地连接在一起。在这个规范中详细说明了用户的应用程序和服务提供应用程序是如何通过API实现交互的。MAPI体系包括以下几部分:MAPI的用户应用程序接口。包括简单的MAPI、CMC9(通用信报调用)、扩展MAPI和Active/OLE报文接口。MAPI支持的客户应用程序的类型。包括报文感知应用程序、报文激活应用程序和基于报文的应用程序。MAPI的服务供应程序。包括地址提供者、报文提供者

5、、传输提供者。使用vc开发程序首先需要装载动态链接库文件MAPI32.DLL,然后是得到程序将会使用到的各个函数的地址常用的函数为:MAPILogon(建立会话函数)、MAPILogoff(结束会话函数)、MAPIFreeBuffer(释放缓冲内存函数)、MAPISendMail(信报发送函数)。通过调用以上函数即可实现邮件的发送。  由于MFC对MAPI进行了很好的封装,使开发信报应用程序的工作大大简化,同时MAPI提供了大量的函数和接口,可以提供丰富的信报功能,然而却很难在邮件体里插入多种格式的文件,只能包含在附件里,对于某些基于邮件的市场活动等,很难吸引邮件接受者的注意,故而达

6、不到满意的效果。(3)使用outlook对象模型进行设计。使用outlook对象模型可以在vc开发环境下实现outlook所有的信报功能,结合vc语言的多线程、模块化设计与outlook的强大的信报处理功能,从而可以实现邮件的自动、定时发送,并可以实现多格式邮件体,在实现过程中相对以上两种方法更加简单易行,本文重点介绍如何利用outlook来实现。2      Outlook、word对象模型的简单介绍Microsoft office 通过一个对象的等级系统和被称为对象模型的对象集合,将其功能提供给VBA语言,一个程序包含两个基本要素:内容和功

7、能。内容指的是程序所包含的信息,也就是文档等信息;功能指的应用程序内容的所有方式,例如打开、关闭、删除等。组成程序的内容和功能以离散的单元提交给VBA,称为对象。大部分情况下,程序提供给VBA的对象集同所有工作需要的对象对应。程序提供的对象根据相关性以等级关系组织起来。最高级对象为Application,在其底下又有许多的子对象,如Excel中的Workbook对象,word中的Document对象,通过使用对象的属性和方法,可以使用office提供的所有功能。   以下简单介绍在本文使用的对象。(1)      outlo

8、ok对象模型: application对象。该对象是outlook的核心对象,即根对象,它提供了对其它所有对象的访问。Namespace对象。该对象是outlook数据源的一个抽象根,虽然该对象不被使用,它还是提供了对在对象树底层上排在自己下面的对象的访问。Item对象。Outlook中最基本的信息单元。本文将使用mailitem对象。Explorer对象。文件夹中项目的可视化表示,outlook用explorer显示item对象。Impector对象。用来显示项目的outlook窗体。Inspector之于项目,如同explorer之于文件夹。(2)   

9、60;  word对象模型application对象。 Word的根对象。Document对象。该对象为word中的文档对象,相对于word中的某一具体文档。Range对象    document对象的某一特定区块,可以通过不同的参数指定,比如一个段落、一个表格等。3. 使用outlook对象模型进行设计使用outlook对象模型,需要在程序中包含对office对象的引用,获得命名空间,然后调用对象的属性和方法,以下列出了部分程序代码。  (1)在stdafx.h 文件,加入以下语句: #import "c:program files

10、Microsoft OfficeOfficemsoutl9.olb"  /*outlook对象引用文件*/#import "c:program filesMicrosoft OfficeOfficemsword9.OLB"  rename_namespace("WD")  /*word对象引用文件*/#import <mshtml.tlb> rename_namespace("HTML")   /*加入对html对象的引用*/(2)  

11、0;   邮件发送函数             BOOL CProject:SendMail()         WD:_ApplicationPtr pWD;     WD:_DocumentPtr pWordDoc;     WD:RangePtr pMainStory;  

12、   WD:_DocumentPtr pWordEditor;     HTML:IHTMLDocument2Ptr pHtmlEditor;    /* 定义word对象和html对象指针*     Outlook:_ApplicationPtr pOL;           Outlook:_MailItemPtr pMail;   

13、        Outlook:_InspectorPtr pInspector;      /*  定义outlook对象指针*/           TESTHR(pOL.CreateInstance(L"Outlook.Application");  /*创建outlook对象*/    &#

14、160;      pMail = pOL->CreateItem(Outlook:olMailItem);     /*创建邮件对象*/           pMail->Display();            pMail->To  = m_SendPerson; 

15、          pMail->CC  = m_CopyPerson;           pMail->Subject = m_bstrSubject;           pInspector = pMail->GetInspector;   &

16、#160;      /*建立邮件对象的发送人和主题*/                 /以下为将现存的word或html文件插入到邮件体里           if(m_lngBodyFileSize>0)       

17、                     TESTHR(pWD.CreateInstance(L"Word.Application");                 _variant_t varBodyFileName=(pA

18、pp->m_BodyFilePathName).AllocSysString();                 pWordDoc = (pWD->Documents)->Open(&varBodyFileName);    /*变量m_BodyFilePathName为所需插入邮件体的word或者html文件所在的路径*/    

19、0;            pMainStory = pWordDoc->Content;                 pMainStory->Copy();             

20、    pWordDoc->Close();                 pWD->Quit();                  pWordDoc = NULL;     

21、0;           pWD = NULL;                  if(BOOL)(pInspector->IsWordMail()              /*检查是word格式还是

22、html格式*/                                        pWordEditor = pInspector->WordEditor;    

23、60;                   (pWordEditor->Content)->Paste();                 else        &

24、#160;                               pHtmlEditor = pInspector->HTMLEditor;               

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论