EmailViaBLAT(@lcErrReturn, lcFrom, lcTo, lcSubject, m.lcBody, @laAttachments, m.lcCC, lcBCC, lcMailServer, lnPort, lcUserName, lcPassword, lnPriority, llHTMLFormat) > >IF NOT EMPTY(lcErrReturn) > x3MSGSVC("RawText", "'" + lcSubject + " to " + m.lcTo + "' failed to be sent. Reason:" + CHR(13) + lcErrReturn) >ENDIF >>
LPARAMETERS tcReturn, tcFrom, tcTo, tcSubject, tcBody, taFiles, tcCC, tcBCC, tcMailServer, tnPort, tcUserName, tcPassword, tnPriority, tlHTMLFormat) >******************************************* > LOCAL lcBlatParam, lcBodyFile, lnCountAttachments, lnResult, loError as Exception > > > 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 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(m.lcBlatParam) + IIF(oAppinfo.BlatLog, " -log blat.log -debug", "")) > > 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)) >ENDFUNCThanks have now tried Winsock anfd that works fine