>local objMsg, msgStream, tmpFilename > >&& (1) Prepare a CDO message > > >objMsg = CreateObject('CDO.Message') >objMsg.To = 'colin@colin-northway.com' >objMsg.subject ='Meet for lunch' > > >if( .t. ) && not a html file > objMsg.TextBody ='Please join me for sandwich. We can meet at noon' >else > objMsg.HTMLbody = FileToStr('d:\tmp\pp.htm') >endif > >&& add attachment if needed > >=m.objMsg.AddAttachment('d:\tmp\1.pdf') > >objMsg.Fields("urn:schemas:mailheader:x-unsent")=1 >=m.objMsg.Fields.Update() > >&& (2) Save the stream of the CDO message to a temp eml file > >msgStream = m.objMsg.GetStream() > >tmpFilename = 'd:\tmp\1.eml' >=m.msgStream.SaveToFile(m.tmpFilename ) > >&& (3) Launch ShellExecute - it will open the default mail (outlook, windows live mail, ...) > > >DECLARE INTEGER ShellExecute IN shell32.dll ; > INTEGER hndWin, STRING cAction, STRING cFileName, ; > STRING cParams, STRING cDir, INTEGER nShowWin > >=ShellExecute(0,"open",m.tmpFilename ,"","",1) > >&& (4) get rid of the temp eml file > >&& left for you > > >Thanks - I'll try that