Thanks, What I tried is BLAT.DLL as under. But this code gives ERROR.. I have installed BLAT.DLL to my working folder.
*******************************
*!* Example of using SendViaBLAT
*******************************
#DEFINE PRIORITYHIGH 1
#DEFINE PRIORITYLOW 0
DIMENSION aryAttach(2)
*aryAttach(1) = "C:\attachment1.txt" && change to an actual file that exists on your computer
*aryAttach(2) = "C:\attachment2.zip" && change to an actual file that exists on your computer
aryAttach(1) = ""
aryAttach(2) = ""
LOCAL lcFrom, lcTo, lcSubject, lcBody, lcCC, lcBCC, lcMailServer, lcUserName, lcPassword, lnPort, lnPriority, llHTMLFormat, lcErrReturn
lcFrom = "mymailid@gmail.com"
lcTo = "yourmailid@hotmail.com"
lcSubject = "Hey Have You Tried VFP Email?"
*!* Sending the body in HTML format
llHTMLFormat = .T. && change to .F. to send plain text message
lcBody = "Hello"
lcCC = ""
lcBCC = ""
lcMailServer = "smtp.gmail.com" && my SMTP Server
lnPort = 25 &&25 && default SMTP Server port
lcUserName = "mysername" && my SMTP username
lcPassword = "mypassword" && my SMTP password
lnPriority = PRIORITYHIGH
SendViaBLAT(@lcErrReturn, lcFrom, lcTo, lcSubject, lcBody, @aryAttach, lcCC, lcBCC, lcMailServer, lnPort, lcUserName, lcPassword, lnPriority, llHTMLFormat)
IF EMPTY(lcErrReturn)
MESSAGEBOX("'" + lcSubject + "' sent successfullly.", 64, "Send email via BLAT")
ELSE
MESSAGEBOX("'" + lcSubject + "' failed to be sent. Reason:" + CHR(13) + lcErrReturn, 64, "Send email via BLAT")
ENDIF
*******************************************
PROCEDURE SendViaBLAT(tcReturn, tcFrom, tcTo, tcSubject, tcBody, taFiles, tcCC, tcBCC, tcMailServer, tnPort, tcUserName, tcPassword, tnPriority, tlHTMLFormat)
*******************************************
LOCAL lcBlatParam, lcBodyFile, lnCountAttachments, lnResult, loError as Exception
lcBodyFile = ""
TRY
*!* Include full path in Declare, such as "C:\Blat240\full\blat.dll"
*!* or make sure that blat.dll is included in the system's PATH variable
DECLARE INTEGER Send IN "blat.dll" STRING cParam
lcBodyFile = ADDBS(SYS(2023)) + SYS(2015) + ".txt"
STRTOFILE(tcBody, lcBodyFile, 0) && body is placed in a text file to be sent by BLAT
lcBlatParam = GetShortPath(lcBodyFile)
IF TYPE("tcTo") = "C"
lcBlatParam = lcBlatParam + " -to " + ALLTRIM(tcTo)
ENDIF
IF TYPE("tcFrom") = "C"
lcBlatParam = lcBlatParam + " -f " + ALLTRIM(tcFrom)
ENDIF
IF TYPE("tcCC") = "C"
lcBlatParam = lcBlatParam + " -cc " + ALLTRIM(tcCC)
ENDIF
IF TYPE("tcBCC") = "C"
lcBlatParam = lcBlatParam + " -bcc " + ALLTRIM(tcBCC)
ENDIF
IF TYPE("tcSubject") = "C"
lcBlatParam = lcBlatParam + [ -s "] + ALLTRIM(tcSubject) + ["]
ENDIF
IF TYPE("tcMailserver") = "C"
lcBlatParam = lcBlatParam + " -server " + ALLTRIM(tcMailserver)
ENDIF
IF TYPE("tnPort") = "N"
lcBlatParam = lcBlatParam + ":" + TRANSFORM(tnPort)
ENDIF
IF TYPE("tcUsername") = "C"
lcBlatParam = lcBlatParam + " -u " + ALLTRIM(tcUsername)
ENDIF
IF TYPE("tcPassword") = "C"
lcBlatParam = lcBlatParam + " -pw " + ALLTRIM(tcPassword)
ENDIF
IF TYPE("tnPriority") = "N" AND BETWEEN(tnPriority, 0, 1)
lcBlatParam = lcBlatParam + " -priority " + TRANSFORM(tnPriority)
ENDIF
IF TYPE("tlHTMLFormat") = "L" AND tlHTMLFormat
lcBlatParam = lcBlatParam + " -html"
ENDIF
IF .f. &&TYPE("taFiles", 1) = "A"
lcBlatParam = lcBlatParam + " -attach "
FOR lnCountAttachments = 1 TO ALEN(taFiles)
lcBlatParam = lcBlatParam + GetShortPath(ALLTRIM(taFiles(lnCountAttachments))) + ","
ENDFOR
lcBlatParam = LEFT(lcBlatParam, LEN(lcBlatParam) - 1) && Remove Extra Comma
ENDIF
lnResult = Send(ALLTRIM(lcBlatParam))
IF lnResult != 0
DO CASE
CASE lnResult = -2
THROW "The server actively denied our connection./The mail server doesn't like the sender name. "
CASE lnResult = -1
THROW "Unable to open SMTP socket" OR ;
"SMTP get line did not return 220" OR ;
"command unable to write to socket" OR ;
"Server does not like To: address" OR ;
"Mail server error accepting message data."
CASE lnResult = 1
THROW "File name (message text) not given" OR ;
"Bad argument given"
CASE lnResult = 2
THROW "File (message text) does not exist"
CASE lnResult = 3
THROW "Error reading the file (message text) or attached file"
CASE lnResult = 4
THROW "File (message text) not of type FILE_TYPE_DISK "
CASE lnResult = 5
THROW "Error Reading File (message text)"
CASE lnResult = 12
THROW "-server or -f options not specified and not found in registry"
CASE lnResult = 13
THROW "Error opening temporary file in temp directory"
OTHERWISE
THROW "Unknown Error"
ENDCASE
ENDIF
CATCH TO loError
tcReturn = [Error: ] + STR(loError.ERRORNO) + CHR(13) + ;
[LineNo: ] + STR(loError.LINENO) + CHR(13) + ;
[Message: ] + loError.MESSAGE + CHR(13) + ;
[Procedure: ] + loError.PROCEDURE + CHR(13) + ;
[Details: ] + loError.DETAILS + CHR(13) + ;
[StackLevel: ] + STR(loError.STACKLEVEL) + CHR(13) + ;
[LineContents: ] + loError.LINECONTENTS
FINALLY
CLEAR DLLS "Send"
IF FILE(lcBodyFile)
ERASE (lcBodyFile)
ENDIF
ENDTRY
ENDPROC
****************************************
Function GetShortPath
****************************************
LPARAMETERS lcFileName
LOCAL lnReturn, lcBuffer
Declare Integer GetShortPathNameA In Win32API As GetShortPathName String, String, Integer
lcBuffer = SPACE(255)
lnReturn= GetShortPathName(lcFileName, @lcBuffer, 255)
Clear Dlls "GetShortPathName"
Return (Left(lcBuffer, lnReturn))
ENDFUNC