DEFINE CLASS eMail AS custom *Send email's HIDDEN logsession, oleMmess, oleMsess, cCurDir lAutoSend = .F. logsession = .F. cTo = '' cCC = '' cBCC = '' cErrMsg = '' cAttachments = '' cSubject = '' cBody = '' oleMmess = null oleMsess = null HIDDEN PROCEDURE Init this.logsession = .F. this.cCurDir=FULLPATH(CURDIR()) IF !FILE(GETENV("WINDIR")+"\SYSTEM32\MAPI32.DLL") AND !FILE(GETENV("WINDIR")+"\SYSTEM\MAPI32.DLL") this.cErrMsg='It does not appear that you have MAPI installed. Mail could not be run.' RETURN .F. ENDIF this.olemmess=CREATEOBJECT('MSMAPI.MAPIMessages') this.oleMsess=CREATEOBJECT('MSMAPI.MAPISession') ENDPROC HIDDEN PROCEDURE Destroy * For some reason this class switches the active folder CD (this.cCurDir) ENDPROC HIDDEN PROCEDURE Error(nError, cMethod, nLine) this.cErrMsg=message() IF this.logsession this.oleMsess.signoff ENDIF this.logsession = .F. ENDPROC HIDDEN FUNCTION signon this.logsession=.T. this.oleMsess.signon IF this.logsession this.oleMmess.sessionid=this.oleMsess.sessionid RETURN .T. ELSE this.cErrMsg='Unable to Establish a Session ID' RETURN .F. ENDIF ENDFUNC HIDDEN FUNCTION signoff this.oleMsess.signoff this.oleMmess.sessionid=this.oleMsess.sessionid ENDFUNC PROCEDURE AddAttachment(tcFilePath, tcName) *Appends the filename and a friendly name within angle brackets this.cattachments=this.cattachments+IIF(!EMPTY(this.cAttachments),[,],[])+ALLTRIM(tcFilePath)+[ <]+ALLTRIM(tcName)+[>] ENDPROC HIDDEN procedure BindAttachments *Adds the attachments to the message LOCAL i,filestring,filepath,filename FOR i = 0 TO GETWORDCOUNT(this.cattachments,[,])-1 filestring=GETWORDNUM(this.cattachments,i+1,[,]) IF !EMPTY(filestring) filepath=ALLTRIM(LEFT(filestring,AT([<],filestring)-1)) filename=STREXTRACT(filestring,[<],[>]) IF EMPTY(filename) filename=JUSTFNAME(filepath) ENDIF WITH this.olemmess .AttachmentIndex=i .AttachmentPathName=filepath .AttachmentName=filename ENDWITH ENDIF ENDFOR ENDPROC PROCEDURE send *This is the primary method. *Please set all exposed properties before calling this method IF this.signon() this.oleMmess.compose this.oleMmess.msgnotetext=this.cBody this.oleMmess.msgsubject=this.cSubject this.oleMmess.msgnotetext=this.cbody this.bindattachments() &&Add attachments this.oleMmess.send(IIF(this.lAutoSend,1,0)) IF this.logsession this.signoff() ENDIF ENDIF ENDPROC ENDDEFINE