287,用lotusnotes发送邮件,第一种方法,SubSendWithLotus()DimnoSessionAsObject,noDatabaseAsObjectDimnoDocumentAsObject,noAttachmentAsObjectDimFileSelfAsStringDimiAsLongConstEMBED_ATTACHMENT=1454ConststSubjectAsString=ForLotusVBAProgrammingTestonlyDimstMsgAsStringFileSelf=ThisWorkbook.Path+\+ThisWorkbook.NamestMsg=Bst&Rgds&vbCrLf&_Application.UserName&vbCrLf&_vbCrLf&_**************************************************************************&vbCrLf&_(This'sanautomatede-mailnotification,pleasedonotreplythismessage.)DimvaRecipientAsVariantvaRecipient=VBA.Array(huangfeng8211@163.com)'InsertLotusNotesCOMobject.SetnoSession=CreateObject(Notes.NotesSession)SetnoDatabase=noSession.GETDATABASE(,D:\notes\data\mail3\tonyhf.nsf)IfnoDatabase.IsOpen=FalseThennoDatabase.OPENMAILSetnoDocument=noDatabase.CREATEDOCUMENTSetnoAttachment=noDocument.CREATERICHTEXTITEM(Body)noAttachment.EMBEDOBJECTEMBED_ATTACHMENT,,FileSelfWithnoDocument.Form=Memo.SendTo=vaRecipient.Subject=stSubject.Body=stMsg.SAVEMESSAGEONSEND=True.PostedDate=Now().SEND0,vaRecipientEndWithSetnoDocument=NothingSetnoDatabase=NothingSetnoSession=NothingAppActivateMicrosoftExcelMsgBoxThisfilebesent,vbInformationEndSub第二种方法SubSendWithLotus()DimnoSessionAsObject,noDatabaseAsObjectDimnoDocumentAsObject,noAttachmentAsObjectDimvaFilesAsVariantDimiAsLongConstEMBED_ATTACHMENT=1454ConststSubjectAsString=ForLotusVBAProgrammingTestonlyConststMsgAsString=Thisfileisforyou!justforreference&vbCrLf&IamStanleyPanDimvaRecipientAsVariantvaRecipient=VBA.Array(stanleypan2000@hotmail.com,stanley.pan@IsolaAg.com)vaFiles=Application.GetOpenFilename(FileFilter:=ExcelFiler(*.xls),*.xls,Title:=AttachfilesforoutgoingE_Mail,MultiSelect:=True)IfNotIsArray(vaFiles)ThenExitSub'InsertLotusNotesCOMobject.SetnoSession=CreateObject(Notes.NotesSession)SetnoDatabase=noSession.GETDATABASE(,D:\notes\data\mail3\tonyhf.nsf)IfnoDatabase.IsOpen=FalseThennoDatabase.OPENMAILSetnoDocument=noDatabase.CREATEDOCUMENTSetnoAttachment=noDocument.CREATERICHTEXTITEM(Body)WithnoAttachmentFori=1ToUBound(vaFiles).EMBEDOBJECTEMBED_ATTACHMENT,,vaFiles(i)NextiEndWithWithnoDocument.Form=Memo.SendTo=vaRecipient.Subject=stSubject.Body=stMsg.SAVEMESSAGEONSEND=True.PostedDate=Now().SEND0,vaRecipientEndWithSetnoDocument=NothingSetnoDatabase=NothingSetnoSession=NothingAppActivateMicrosoftExcelMsgBoxThisfileissendOK,vbInformationEndSub1,返回当前数据库的信息,a,返回当前数据库的名称,结果,b,返回当前数据库的文件名,c,返回当前数据库的文件路径,2,发送邮件的一些设置,Subaaaaaa()DimnoAsObjectDimdbAsObjectDimdocAsObjectDimfieldsAsObjectDimnofieldsAsObjectDimattAsVariantatt=Application.GetOpenFilename(FileFilter:=ExcelFiler(*.xls),*.xls,_Title:=AttachfilesforoutgoingE_Mail,MultiSelect:=True)'添加附件Setno=CreateObject(notes.notessession)'建立和邮件的连接Setdb=no.CURRENTDATABASE'建立和邮件数据库的连接Setdoc=db.CREATEDOCUMENT'创建一个新的邮件Setfields=doc.CREATERICHTEXTITEM(body)'设置新邮件的正文(附件)对象Withfields'设置邮件的正文和附件.APPENDTEXTthise-mailisgeneratedbyanautomatedprocessjustforatest.ADDNEWLINE1'增加第一行.APPENDTEXTpleasedonotreply..ADDNEWLINE2'增加第二行Fori=1ToUBound(att)'添加附件.EMBEDOBJECT1454,,att(i)NextiEndWithWithdoc'设置新邮件的除正文和附件外的其他信息.form=Memo'新邮件.sendto=VBA.Array(huangfeng8211@163.com,tonyhf@cn.ibm.com)'发送给.Subject=thismailisjustfortesting'主题.SAVEMESSAGEONSEND=True'是否保存发送的邮件到发件箱.postdate=DateAdd(d,1,Date)'发送日期等于当天.SEND0'发送EndWithMsgBoxsuccessfullysentoutthemail!Setno=Nothing'释放内存Setdb=NothingSetdoc=NothingSetfields=NothingEndSub在添加附件的时候,如果只是想将当前的活动工作薄作为附件的话,如下,注意一下,如果是1452的话,效果如下,会出现一个提示,询问文档包含外部对象链接,是否要更新链接,如果确定的话,效果如下,会将EXCEL文件中的内容以图片形式打开,同时文件是只读格式的,如果是1453,效果如下,不会有提示,但是文件为只读,如果为1454,则为正常的EXCEL文件格式,3,提取邮件的一些信息,以上的发件人,发送时间,主题等信息还可以如下表示,运行结果,4,指定是在收件箱,发件箱或其他自定义的文件夹,a,收件箱等邮箱本身就存在的,b,如果是自己创建的文件夹及子文件夹,比如在我的邮箱中有自定义的文件夹,folders,如果要想获取其下面的子文件夹之一的相关资料,则应如下书写,4,用上面的方法提取出来的发件人是有公司名称的,anotes.CREATENAME(adocument.GETITEMVALUE(from)(0)).ABBREVIATED如果不使用abbreviated,则结果为,如果想要输出的发件人只有名字,没有公司名的话,可以做如下更改,结果为,排版之后的效果如下所示,5,如果想要将附件保存到指定的文件夹的话,以上代码是将发件箱中的附件保存到D盘的新建文件夹,以下将发件箱改成自定义的文件夹,”HR-information”6,用以下方法也可以获得附件的名称,结果,也可以将oemb.source改成oemb.name,结果一样,结果,以上代码是获取发件箱中的第一个邮件的附件名称,7,设置发送邮件时的邮件正文,以上的代码中,其实withfields和withdoc都是设置邮件的正文,withfields,是设置邮件的正文和附件信息,withdoc,是设置邮件的发送人,是否保存到发件箱等一些其他的信息,8,在发送邮件的时候,要注意body的问题,a,如果自始至终都使用body来添加附件和正文的话,则添加的正文就不会出现,就只有附件,发送后的结果,注意,以上发送出去的邮件是没有正文的,只有附件,就是说以上的代码用withdoc添加的body正文没有添加成功,如果想要有正文的话,有两个办法,第一,将第一个括号里面的body改成和第三个红框里面的body不同的字符,结果,注意,这样更改后的结果就是,发送的邮件的正文文本和附件之间有一条线分隔,第二种方法,就是用appendtext方法添加空行的方法,以上的代码就是通过添加空行,添加文本的方法来添加正文文本部分,结果,9,枚举所有folder的名称,结果,以上代码是返回所有的文件夹,以下的代码返回的是非文件夹,结果,10,如果想要将发件人的名称改成其他的名称,比如groupsender,可以做如下设置,请注意以上代码中的红色框框部分,加上doc.principal=“groupsender”,收到的邮件的发件人就会显示groupsender,结果,11,如果在没有打开邮箱的情况下想发送邮件,可以设置如下Subabb()DimMaildbAsObjectDimMailDocAsObjectDimBodyAsObjectDimSessionAsObject'StartasessiontonotesSetSession=CreateObject(Lotus.NotesSession)'ThislinepromptsforpasswordofcurrentIDnotedinNotes.INICallSession.Initialize'orusebelowtosupplypasswordofthecurrentID'CallSession.Initialize()'OpenthemaildatabaseinnotesSetMaildb=Session.GETDATABASE(,D:\notes\data\mail3\tonyhf.nsf)IfNotMaildb.IsOpen=TrueThenCallMaildb.OpenEndIf'Crea