*Yo uso que encontré en internet que se conecta por medio de gMail y CDO, primero creas un PRG con el sig. contenido:
LPARAMETERS cTo, cSubject, cTexto, cHTMLBody, cArchivoAdj1, cArchivoAdj2
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") = "smtp.gmail.com"
.ITEM(lcSchema + "smtpserverport") = 465 && o 587
.ITEM(lcSchema + "sendusing") = 2
.ITEM(lcSchema + "smtpauthenticate") = .T.
.ITEM(lcSchema + "smtpusessl") = .T.
.ITEM(lcSchema + "sendusername") = "[email protected]"
.ITEM(lcSchema + "sendpassword") = "TuContraseña"
.UPDATE
ENDWITH
loMsg = CREATEOBJECT ("CDO.Message")
WITH loMsg
.Configuration = loConfig
.FROM = "TU NOMBRE COMPLETO <[email protected]>" &&<-- esto es para que se m uestre al destinatario.
.TO = cTo
.Subject = cSubject
IF EMPTY(cTexto)
IF EMPTY(cHTMLBody)
.TextBody = 'Mensaje enviado automáticamente desde programa de control'
ELSE
.HTMLBody = cHTMLBody
ENDIF
ELSE
.TextBody = cTexto + REPLICATE(CHR(13),10)+'ID'+SYS(2015)
ENDIF
IF FILE(cArchivoAdj1)
. AddAttachment(cArchivoAdj1)
Endif
IF FILE(cArchivoAdj2)
. AddAttachment(cArchivoAdj2)
Endif
. Send()
Endwith
CATCH TO loError
lcErr = [Error: ] + STR(loError.ERRORNO) + CHR(13) + ;
[Linea: ] + STR(loError.LINENO) + CHR(13) + ;
[Mensaje: ] + loError.MESSAGE+ CHR(13)+ CHR(13) + ;
'Inténtelo mas tarde'
FINALLY
RELEASE loConfig, loMsg
STORE .NULL. TO loConfig, loMsg
IF EMPTY(lcErr)
MESSAGEBOX("El mensaje se envió correctamente", 64, "Aviso")
ELSE
MESSAGEBOX(lcErr, 16 , "Error")
ENDIF
ENDTRY
*****fin del archivo PRG
Luego solamente lo llamas en tu botón de la siguiente forma:
DO correo_gmail WITH '[email protected]',;
'El asunto que quieras',;
'El contenido del cuerpot del mensaie',;
'',;
CArchivoPDF