Since I do not like using Outlook because of its ability to pass viruses without your knowlwdge, I use eudora.
sample prg reading from a DBF to create a eudore email
[tt]
gcEmailExe = IsFileInReg("Eudora.exe"

lcFile = "c:\temp\emm.msg" (or what every name you want with a msg extension)
lnFileNo = fcreate(lcfile)
if lnFileNo < 0.5
replace EM2VEND.ERROR_NO with lnFileNo
fclose(lnFileNo)
loop
endif
fputs(lnFileNo , "To: " + lower(alltrim(EM2VEND.EM_TO)))
fputs(lnFileNo , "From: " + lower(alltrim(EM2VEND.EM_FROM)))
fputs(lnFileNo , "Subject: " + Proper(alltrim(EM2VEND.EM_SUBJECT)))
fputs(lnFileNo , "Cc: " + iif(empty(EM2VEND.EM_CC) , "" , lower(alltrim(EM2VEND.EM_CC)) + " "
fputs(lnFileNo , "Bcc: " + iif(empty(EM2VEND.EM_BCC) , "" ,
lower(alltrim(EM2VEND.EM_BCC)) + " "
fputs(lnFileNo , "Attached: " + iif(empty(EM2VEND.EM_ATTACH) , " " ,
alltrim(EM2VEND.EM_ATTACH) + ";"
fputs(lnFileNo , "X-Attachments: "+ iif(empty(EM2VEND.EM_ATTACH) , " " ,
alltrim(EM2VEND.EM_ATTACH) + ";"

*
* e-mail text
*
fputs(lnFileNo , ""

&& Warning this must be a null for eudora to read the text
fclose(lnFileNo)
if !empty(EM2VEND.EM_MSG)
copy memo EM2VEND.EM_MSG to (lcFile) additive
endif
= runexe(gcEmailExe , lcFile)
[/tt]
David W. Grewe
Dave@internationalbid.com
ICQ VFP ActiveList #46145644