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)) ENDFUNC