基于vc与word、outlook对象模型的email实现
使用outlook对象模型,需要在程序中包含对office对象的引用,获得命名空间,然后调用对象的属性和方法,以下列出了部分程序代码。
(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 <mshtml.tlb> rename_namespace("HTML") /*加入对html对象的引用*/
(2) 邮件发送函数
BOOL CProject::SendMail()
{
WD::_ApplicationPtr pWD;
WD::_DocumentPtr pWordDoc;
WD::RangePtr pMainStory;
WD::_DocumentPtr pWordEditor;
HTML::IHTMLDocument2Ptr pHtmlEditor; /* 定义word对象和html对象指针*
Outlook::_ApplicationPtr pOL;
Outlook::_MailItemPtr pMail;
Outlook::_InspectorPtr pInspector; /* 定义outlook对象指针*/
TESTHR(pOL.CreateInstance(L"Outlook.Application")); /*创建outlook对象*/
pMail = pOL->CreateItem(Outlook::olMailItem); /*创建邮件对象*/
pMail->Display();
pMail->To = m_SendPerson;
pMail->CC = m_CopyPerson;
pMail->Subject = m_bstrSubject;
pInspector = pMail->GetInspector; /*建立邮件对象的发送人和主题*/
//以下为将现存的word或html文件插入到邮件体里
if(m_lngBodyFileSize>0)
{
TESTHR(pWD.CreateInstance(L"Word.Application"));
_variant_t varBodyFileName=(pApp->m_BodyFilePathName).AllocSysString();
pWordDoc = (pWD->Documents)->Open(&varBodyFileName); /*变量m_BodyFilePathName为所需插入邮件体的word或者html文件所在的路径*/
pMainStory = pWordDoc->Content;
pMainStory->Copy();
pWordDoc->Close();
pWD->Quit();
pWordDoc = NULL;
pWD = NULL;
if((BOOL)(pInspector->IsWordMail())) /*检查是word格式还是html格式*/
{
pWordEditor = pInspector->WordEditor;
(pWordEditor->Content)->Paste();
}else
{
pHtmlEditor = pInspector->HTMLEditor;
pHtmlEditor->execCommand("Paste",VARIANT_FALSE);
}
pMail->Send();
}
以上简单的介绍了如何实现邮件体的发送,真正的邮件程序,还有许多其它的工作,在这不再详叙了,通过以上方法,可以实现多种格式邮件体的发送,本文给出了部分程序代码。
参考文献:
1 J. Klensin. SMTP Service Extensions.RFC1869, November 1995
2 G. Vaudreuil. SMTP Service Extensions for Transmission of Large and Binary MIME Messages. RFC1830. August 199
3 microsoft. Microsoft Powerpoint 2000,Outlook 2000和FrontPage 2000 language reference.August 1999
4 博嘉科技.Visual c++6.0/Internet Programming Instance.北京希望电子出版社.2001年6月