LOCAL loCfg, loMsg, loErr TRY loCfg = CREATEOBJECT("CDO.Configuration") WITH loCfg.Fields .Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp.gmail.com" .Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 465 && ó 587 .Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2 .Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = .T. .Item("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = .T. .Item("http://schemas.microsoft.com/cdo/configuration/sendusername") = "user@gmail.com" .Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "password" .Update ENDWITH loMsg = CREATEOBJECT ("CDO.Message") WITH loMsg .Configuration = loCfg *-- From and To .From = "User <user@gmail.com>" .To = "Tom <tom@gmail.com>" *-- Request read receipt .Fields("urn:schemas:mailheader:disposition-notification-to") = .From .Fields("urn:schemas:mailheader:return-receipt-to") = .From .Fields.Update *-- Subject .Subject = "TEST " + TTOC(DATETIME()) *-- Body .TextBody = "This is a test message with CDO from Visual FoxPro" *-- Send the message .Send() ENDWITH CATCH TO loErr MESSAGEBOX("Failed to send the message" + CHR(13) + ; "Error: " + TRANSFORM(loErr.ErrorNo) + CHR(13) + ; "Menssage: " + loErr.Message , 16, "Error") FINALLY loMsg = NULL loCfg = NULL ENDTRY