1 Son düzenleyen, ugurlu2001 (25.01.2012 11:26:15)

Konu: blat.dll hk.

Öncelikle herkese merhaba;

Yakın bir zamana kadar BLAT.DLL i rahatlıkla kullanıyordum. Bugün farkettim ki; Windows 7 ( 64 bit Türkçe ); BLAT a fena halde bozulmuş.

Dosyayı unregister edip tekrar register ettim ama nafile. Register ettiğim de BLAT.DLL dosyasının boyutu her daim "0" byte olarak güncelleniyor. Dosyayı C:\Windows\SysWOW64 klasörüne kopyaladıktan sonra register ediyorum.

Sorum şu: Sorun BLAT.DLL demi? Windows 'ta mı? Mail yollamak için alternatif bir yol mu denemeliyim? Yoksa BLAT ile yoluma devam etmek için bir yol var mı?

Cevap ve yorumlar için şimdiden teşekkür ediyorum.

Bu arada kullandığım (XP ve Vistada çalışan ) şu şekildeydi :

http://www.sweetpotatosoftware.com/SPSB … 96fb7.aspx

Visual Fox Pro
*!*    Yahoo ÇALIŞIYOR

*******************************
*!* Example of using SendViaBLAT
*******************************
#DEFINE PRIORITYHIGH 1
#DEFINE PRIORITYLOW 0
 
DIMENSION aryAttach(2)
aryAttach(1) = "C:\Test1.txt" && change to an actual file that exists on your computer
aryAttach(2) = "C:\Test2.txt" && change to an actual file that exists on your computer
 
LOCAL lcFrom, lcTo, lcSubject, lcBody, lcCC, lcBCC, lcMailServer, lcUserName, lcPassword, lnPort, lnPriority, llHTMLFormat, lcErrReturn
 
lcFrom = "ugurlu2001#yahoo;com"
lcTo = "ugurlu2001#hotmail;com"
lcSubject = "Deneme konusu!"
*!* Sending the body in HTML format
llHTMLFormat = .T. && change to .F. to send plain text message
lcBody = "<a href='http://www.fox4um.com'>" + ;
"Deneme icin yollandi!" + ;
"</a>"
lcCC = "ugurlu2001#gmail;com"
lcBCC = "ugurlu2001#yahoo;com"
lcMailServer = "smtp.mail.yahoo.com" && my SMTP Server
lnPort = 25 && or 587 or 995 default SMTP Server port
lcUserName = "ugurlu2001#yahoo;com" && my SMTP username
lcPassword = "xxxxxxxxxxxx/" && 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 "O:\F_Kullan\Blat\blat262.full\blat262\full\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(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
Uğur
-------------------------------------------------------------------------------------------------------------
Hayat bir bisiklete binmek gibidir. Pedalı çevirmeye devam ettiğiniz sürece düşmezsiniz. Claude Peppeer
Kusuru söylenmeyen adam, ayıbını hüner sanır.  Türk Atasözü

2

Re: blat.dll hk.

register gerektirmeyen cdo mail i dene , ornek Gmail ile sorunsuz ve hizli...

Visual Fox Pro
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 && ó 587
        .Item(lcSchema + "sendusing") = 2
        .Item(lcSchema + "smtpauthenticate") = .T.
        .Item(lcSchema + "smtpusessl") = .T.
        .Item(lcSchema + "sendusername") = "soykanozcelik@gmail.com"
        .Item(lcSchema + "sendpassword") = "XXXXXXX"
        .Update
    Endwith
    loMsg = Createobject ("CDO.Message")
    With loMsg
        .Configuration = loConfig
        .From = "soykanozcelik@gmail.com"
        .To = "soykanozcelik@hotmail.com"
        .Subject = "Gmail email test"
        .TextBody = "sending email via CDO  " + ;
            "authentication feature of Gmail"
        .Send()
    Endwith
Catch To loError
    lcErr = [Error: ] + Str(loError.ErrorNo) + Chr(13) + ;
        [Line: ] + Str(loError.Lineno) + Chr(13) + ;
        [Message: ] + loError.Message
Finally
    Release loConfig, loMsg
    Store .Null. To loConfig, loMsg
    If Empty(lcErr)
        Messagebox("Succesfully send", 64, "Email Report")
    Else
        Messagebox(lcErr, 16 , "Error")
    Endif
Endtry

3 Son düzenleyen, metin (24.01.2012 17:51:44)

Re: blat.dll hk.

blat.exe yi kullanabilirsin. parametreleri aynı. tek farkı dll değil. run ile çalıştıracaksın. register de gerekmez hem. ayrıca neden illa windows altına kopyalıyorsun? herhangi bir yerde de register edebilirsin.
bu arada madem soykan'ınki sorunsuz, onu kullanabilirsin? benim hala blat kullanmamın sebebi foxpro dos ile bile çalışması.

Haksızlıklar karşısında susanlar, dilsiz şeytanlardır!
www.metinemre.com

4

Re: blat.dll hk.

Win7 64 bit makinede en son güncellemeleri yükledikten sonra BLAT.DLL unutabilirsin! ( En azından benim PC de öyle oldu. )

Uğur
-------------------------------------------------------------------------------------------------------------
Hayat bir bisiklete binmek gibidir. Pedalı çevirmeye devam ettiğiniz sürece düşmezsiniz. Claude Peppeer
Kusuru söylenmeyen adam, ayıbını hüner sanır.  Türk Atasözü

5

Re: blat.dll hk.

Soykan Abi;

Denedim; gayet güzel çalışıyor.

Çok teşekkürler smile

Bende bir kaç alternatif bakınıyordum. Hiç uğraşmadan sonuç almak güzel oldu...

Uğur
-------------------------------------------------------------------------------------------------------------
Hayat bir bisiklete binmek gibidir. Pedalı çevirmeye devam ettiğiniz sürece düşmezsiniz. Claude Peppeer
Kusuru söylenmeyen adam, ayıbını hüner sanır.  Türk Atasözü

6

Re: blat.dll hk.

bazen kısa yoldan halletmek iyidir smile