I use CDO - the Sys_Main table contains the email settings, login, password, port, etc. You can hard code them for testing. I use the Google smtp servers.
Usually CDO is included in Office or Windows. If you need to install it try
http://www.microsoft.com/en-us/download ... px?id=3671* bc_CDOMail.prg
Parameters lcTo,lcAttach,lcReplyTo, lcSubject, lcBody
Local lcSchema, loConfig, loMsg, loError, lcErr, lnRecNo, lcAlias, lcTextBody
lnRecNo = Recno()
lcAlias = Alias()
If Vartype(lcReplyTo) = 'L'
lcReplyTo = Alltrim(Sys_Main.Ema_ClientReply)
Endif
If Vartype(lcAttach) = 'L'
lcAttach = ''
Endif
If Vartype(lcBody) = 'L'
lcBody = 'Body'
Endif
If Vartype(lcSubject) = 'L'
lcSubject = 'Subject'
Endif
If Vartype(lcTo) = 'L'
lcTo = ''
Endif
lcTextBody = lcBody
*Scan
If '@'$lcTo
Try
Local lcSchema, loConfig, loMsg, loError, lcErr
lcErr = ""
lcSchema = "http://schemas.microsoft.com/cdo/configuration/"
loConfig = Createobject("CDO.Configuration")
With loConfig.Fields
.Item(lcSchema + "smtpserver") = Alltrim(Sys_Main.Ema_SmtpPostOffice)
.Item(lcSchema + "smtpserverport") = Val(Sys_Main.Ema_SmtpPort) && 465 && ó 587
.Item(lcSchema + "sendusing") = 2
.Item(lcSchema + "smtpauthenticate") = .T.
.Item(lcSchema + "smtpusessl") = .T.
.Item(lcSchema + "sendusername") = Sys_Main.Ema_LoginClient
.Item(lcSchema + "sendpassword") = Sys_Main.Ema_PwClient
.Item(lcSchema + "replyto") = Sys_Main.Ema_ClientReply
.Item(lcSchema + "from") = Sys_Main.Ema_ClientReply
.Update
Endwith
lnRecNo = Recno()
loMsg = Createobject ("CDO.Message")
lcBcc = lcReplyTo
If Len(lcSubject) > 0
lcSubject = lcSubject + Space(1)
Endif
Wait Window 'Stand by..' Nowait
IF ! EMPTY(lcAttach)
loMsg.AddAttachment(Alltrim(lcAttach))
Endif
With loMsg
.BCC = lcBcc
.CC = lcReplyTo
.Configuration = loConfig
.ReplyTo = lcReplyTo &&Alltrim(Sys_Main.Ema_ClientReply)
.Sender = lcReplyTo &&Alltrim(Sys_Main.Ema_ClientReply)
.From = lcReplyTo &&Alltrim(Sys_Main.Ema_ClientReply)
.To = lcTo
.Subject = lcSubject
IF '</P>'$UPPER(lcTextBody) .or. '<HTML>'$UPPER(lcTextBody) .or. '<LI>'$UPPER(lcTextBody) .or. '<BR>'$UPPER(lcTextBody)
.HTMLBody = lcTextBody && Thisform.edtEma_batch3_note.Value
ELSE
.TEXTBody = lcTextBody && Thisform.edtEma_batch3_note.Value
Endif
.Send()
Endwith
Catch To loError
lcErr = [Error: ] + Str(loError.ErrorNo) + Chr(13) + ;
[Linea: ] + Str(loError.Lineno) + Chr(13) + ;
[Mensaje: ] + loError.Message
Finally
Release loConfig, loMsg
Store .Null. To loConfig, loMsg
If Empty(lcErr)
Wait Window 'Processing.... ' + Transform(Recno()) Nowait
Else
Messagebox(lcErr, 16 , "Error")
Endif
Endtry
Endif
*Endscan
Select(lcAlias)
Set Filter To
Go lnRecNo
Wait Window 'Finished Sending Email...' Nowait