- 相關(guān)推薦
基于vc與word、outlook對象模型的email實現(xiàn)
摘要: 分析了三種不同的實現(xiàn)郵件發(fā)送方法, 通過vc可視化開發(fā)環(huán)境,結(jié)合word及outlook對象模型,實現(xiàn)將word格式以及其他文件格式的文件作為email的郵件體,從而利用word的強大編輯能力構(gòu)成與發(fā)送豐富多彩的郵件。
關(guān)鍵詞:SMTP協(xié)議 MAPI編程接口 對象模型 動態(tài)鏈接庫 電子郵件
隨著信息技術(shù)的飛速發(fā)展,電子郵件作為一種通訊手段,在日常生活和辦公領(lǐng)域中發(fā)揮著巨大的作用,一些行業(yè)需要以郵件為載體,實現(xiàn)信息的實交互、反饋、統(tǒng)計等功能。Visual c 作為功能強大的可視化編程工具正在日益得到廣泛的應(yīng)用。使用vc開發(fā)可以實現(xiàn)多線程,支持面向?qū)ο蟆⒛K化、等特點,大大提高軟件的開發(fā)效率,同時結(jié)合 word、excel、outlook等office 對象模型,從而有望實現(xiàn)含多格式郵件體的郵件定時、批量的發(fā)送及其信息反饋的自動處理。本文提出了一種利用vc實現(xiàn)郵件發(fā)送的方法,并且實現(xiàn)了將word、html文檔插入到郵件體,從而達到即有web網(wǎng)頁的生動,又具有郵件的快捷、方便的效果。
1. 基于vc的email功能實現(xiàn)
在vc環(huán)境下有三種方法可以實現(xiàn)郵件的發(fā)送,下面分別介紹:
(1):使用SMTP進行設(shè)計。電子郵件系統(tǒng)所應(yīng)用的傳輸協(xié)議包括SMTP和POP協(xié)議。SMTP即簡單郵件傳輸協(xié)議,屬于TCP/IP協(xié)議族,.使用SMTP設(shè)計基于以下通訊模型:針對用戶的郵件請求,發(fā)送SMTP與接受SMTP之間建立一個雙向通道。一旦傳送通道建立,SMTP發(fā)送者發(fā)送mail命令指明郵件發(fā)送者。如果SMTP接受者接受,則返回OK應(yīng)答。SMTP發(fā)送者再發(fā)出RCPT命令確認郵件是否接受到。故在vc環(huán)境下,基于SMTP協(xié)議的郵件發(fā)送流程為:
SMTP協(xié)議也有自身的局限性,它只能傳輸ASCAII文本文件,但對于一些二進制數(shù)據(jù)文件需要進行編碼后才能傳輸。
(2)使用MAPI進行設(shè)計。MAPI是一系列的編程接口規(guī)范,而不是應(yīng)用程序、動態(tài)鏈接庫或系統(tǒng)服務(wù)程序。它們可以將任何用于電子郵件或工作組的應(yīng)用程序與適應(yīng)MAPI的消息服務(wù)天衣無縫地連接在一起。在這個規(guī)范中詳細說明了用戶的應(yīng)用程序和服務(wù)提供應(yīng)用程序是如何通過API實現(xiàn)交互的。MAPI體系包括以下幾部分:①MAPI的用戶應(yīng)用程序接口。包括簡單的MAPI、CMC9(通用信報調(diào)用)、擴展MAPI和Active/OLE報文接口。②MAPI支持的客戶應(yīng)用程序的類型。包括報文感知應(yīng)用程序、報文激活應(yīng)用程序和基于報文的應(yīng)用程序。③MAPI的服務(wù)供應(yīng)程序。包括地址提供者、報文提供者、傳輸提供者。使用vc開發(fā)程序首先需要裝載動態(tài)鏈接庫文件MAPI32.DLL,然后是得到程序?qū)褂玫降母鱾函數(shù)的地址常用的函數(shù)為:MAPILogon(建立會話函數(shù))、MAPILogoff(結(jié)束會話函數(shù))、MAPIFreeBuffer(釋放緩沖內(nèi)存函數(shù))、MAPISendMail(信報發(fā)送函數(shù))。通過調(diào)用以上函數(shù)即可實現(xiàn)郵件的發(fā)送。
由于MFC對MAPI進行了很好的封裝,使開發(fā)信報應(yīng)用程序的工作大大簡化,同時MAPI提供了大量的函數(shù)和接口,可以提供豐富的信報功能,然而卻很難在郵件體里插入多種格式的文件,只能包含在附件里,對于某些基于郵件的市場活動等,很難吸引郵件接受者的注意,故而達不到滿意的效果。
(3)使用outlook對象模型進行設(shè)計。使用outlook對象模型可以在vc開發(fā)環(huán)境下實現(xiàn)outlook所有的信報功能,結(jié)合vc語言的多線程、模塊化設(shè)計與outlook的強大的信報處理功能,從而可以實現(xiàn)郵件的自動、定時發(fā)送,并可以實現(xiàn)多格式郵件體,在實現(xiàn)過程中相對以上兩種方法更加簡單易行,本文重點介紹如何利用outlook來實現(xiàn)。
2. Outlook、word對象模型的簡單介紹
Microsoft office 通過一個對象的等級系統(tǒng)和被稱為對象模型的對象集合,將其功能提供給VBA語言,一個程序包含兩個基本要素:內(nèi)容和功能。內(nèi)容指的是程序所包含的信息,也就是文檔等信息;功能指的應(yīng)用程序內(nèi)容的所有方式,例如打開、關(guān)閉、刪除等。組成程序的內(nèi)容和功能以離散的單元提交給VBA,稱為對象。大部分情況下,程序提供給VBA的對象集同所有工作需要的對象對應(yīng)。程序提供的對象根據(jù)相關(guān)性以等級關(guān)系組織起來。最高級對象為Application,在其底下又有許多的子對象,如Excel中的Workbook對象,word中的Document對象,通過使用對象的屬性和方法,可以使用office提供的所有功能。
以下簡單介紹在本文使用的對象。
(1) outlook對象模型:
application對象。該對象是outlook的核心對象,即根對象,它提供了對其它所有對象的訪問。
Namespace對象。該對象是outlook數(shù)據(jù)源的一個抽象根,雖然該對象不被使用,它還是提供了對在對象樹底層上排在自己下面的對象的訪問。
Item對象。Outlook中最基本的信息單元。本文將使用mailitem對象。
Explorer對象。文件夾中項目的可視化表示,outlook用explorer顯示item對象。
Impector對象。用來顯示項目的outlook窗體。Inspector之于項目,如同explorer之于文件夾。
(2) word對象模型
application對象。 Word的根對象。
Document對象。該對象為word中的文檔對象,相對于word中的某一具體文檔。
Range對象 document對象的某一特定區(qū)塊,可以通過不同的參數(shù)指定,比如一個段落、一個表格等。
3. 使用outlook對象模型進行設(shè)計
使用outlook對象模型,需要在程序中包含對office對象的引用,獲得命名空間,然后調(diào)用對象的屬性和方法,以下列出了部分程序代碼。
(1)在stdafx.h 文件,加入以下語句:
#import "c:\program files\Microsoft Office\Office\msoutl9.olb" /*outlook對象引用文件*/
#import "c:\program files\Microsoft Office\Office\msword9.OLB" \
rename_namespace("WD") /*word對象引用文件*/
#import
【基于vc與word、outlook對象模型的email實現(xiàn)】相關(guān)文章:
多層微帶線結(jié)構(gòu)通用模型的vc實現(xiàn)11-23
基于OpenGL的邦寶模型積木分析系統(tǒng)設(shè)計與實現(xiàn)03-18
在Windows系統(tǒng)中用VC 實現(xiàn)鉤子機制03-18
基于TMS320VC5416的FIR數(shù)字濾波器設(shè)計與實現(xiàn)03-07
網(wǎng)絡(luò)智能游戲的設(shè)計與實現(xiàn)VC++11-23
TMS320VC5416并行自舉的巧妙實現(xiàn)03-18