This is so simple I drop this in most my apps:
#Define MAIL_MESSAGE 0
#Define olByValue 1
Close data
Use ..\data\members2 in 0
Select members2
Scan for !empty(email)
cAddress = alltr(email)
cMessage_ID = ttoc(datetime())
cSubject = "Europa Application: " + cMessage_ID
cBody = 'Testing email for Karen S'
Public x
oApp=createobject("Outlook.Application"

oMail = oApp.CreateItem(MAIL_MESSAGE)
With oMail
.To = cAddress
* cc/bcc work ok
.cc= "Michaelo@srgroup.com.au"
.bcc='Michaelo@srgroup.com.au'
* .SenderName =""
* this is valid but I need permission for austpaper
.SentOnBehalfOfName="australianpaper@srgroup.com.au"
* "australianpaper@srgroup.com.au"
.Body = chr(13)+chr(13)+ cBody + .Body ;
+chr(13)+ chr(13) +"Dear "+alltr( alltr(title)+space(1)+alltr(firstname)+space(1)+alltr(surname) );
+ chr(13)+ chr(13)+"Welcome to my ole nightmare! " ;
+ chr(13)+chr(13)+"This message was automatically created but still generated a 'You do not have permission error!'" ;
+ chr(13)+ chr(13)+ " - Michael O"
* .Attachments.Add(set('defa')+sys(2003)+"\data\film" + ".dbf", olByValue, 2, "film.dbf"

* .Attachments.Add(set('defa')+sys(2003)+"\data\imports" + ".dbf", olByValue, 1, "imports.dbf"
* .Attachments.Add(this.OutputDir + this.cOutputTable + ".dbf", olByValue, 2, this.cOutputTable)
* .Attachments.Add(this.OutputDir + this.cProcessTable + ".dbf", olByValue, 1, this.cProcessTable)
.Subject = cSubject
.Save()
* let user send themselves
.Display
*.Send()
Endwith
Endscan
Close data