Página 1 de 1

DLL do BLAT

Enviado: 06 Out 2013 11:59
por jelias
Amiguinhos,

Estou tentando implementar em meus sistemas o uso da DLL do BLAT. Para tanto, estou usado a rotina que o Mestre Rochinha disponibilizou aqui no fórum. Meu interesse no uso da DLL é ter um processo mais rápido e seguro para envio de e-mail, mais o que ocorre é que fica muito lento e apresenta um falha no log que não consigo entender.
Se alguém puder ajudar, agradeço antecipadamente!

Código: Selecionar todos

FUNCTION BLATEMAIL( cbody ,;
		    cserver ,;
		    cto ,;
		    cf ,;
		    csubject ,;
		    cu ,;
		    cpw ,;
		    cattach,;
		    lHtml )
XlHtml := .t.
BlatCMD := [ blat.txt] + ;
	   [ -to ]	 + alltrim(cto) + ;
	   [ -server ]	 + alltrim(cserver) + ;
	   [ -mailfrom ] + alltrim(cf) + ;
	   [ -f ]	 + alltrim(cf) + ;
	   [ -subject "] + alltrim(csubject) + ["] + ;
	   [ -r ]	 + ;
	   [ -u ]	 + alltrim(lower(cu)) + ;
	   [ -pw ]	 + alltrim(lower(cpw)) + ;
	   [ -log "email.log" -debug ] + ;
	   iif( lHtml, [ -html ], [] )
if empty( cAttach )
else
   if ValType( cAttach ) == "A"
      For nEle := 1 To Len( cAttach )
	  BlatCMD := BlatCMD + [ -attach "] + alltrim(cAttach[ nEle ]) + ["]
      Next
   else
      BlatCMD := BlatCMD + [ -attach "] + alltrim(cAttach) + ["]
   endif
endif
if lHtml
   cBody := FormHtml( cSubject, cBody )
endif
rMemoWrit( "blat.txt", cbody )
fErase( "email.log" )
BlatLOG := BLATSEND( BlatCMD )
inkey(0)
RETURN .T.

	 
*DLL32 FUNCTION SendB( BlatCMD AS STRING ) AS LONG PASCAL ;
*      FROM "SendBlat" LIB "Blat.dll"

DLL32 FUNCTION BlatSend( BlatCMD AS STRING ) AS LONG PASCAL ;
      FROM "Send" LIB "Blat.dll"

Function rMemoWrit( _aquivo_, _conteudo_ )
nHandle := fCreate( _aquivo_ )
fWrite( nHandle, _conteudo_, LEN( _conteudo_ ) )
fClose( nHandle )
RETURN .T.
	 
Function FormHtml( cSubject, cBody )
Local cOpen
cOpen  := '<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/1999/REC-html401-19991224/loose.dtd">' + CRLF
cClose := CRLF + 'Nossa empresa envia email somente para pessoas e empresas cadastradas em nosso sistema.' + CRLF + ;
'Caso tenha duvidas favor entrar em contato com nossa central de atendimento ao cliente.'
cHTML := ;
'<html>'  + CRLF + ;
'<head>'  + CRLF + ;
'   <meta http-equiv="Content-Type"' + CRLF + ;
'         content="text/html; charset=iso-8859-1">' + CRLF + ;
'</head>' + CRLF + ;
'<body>'  + CRLF + ;
'<pre>'   + CRLF + ;
cBody	 + CRLF + ;
'</pre>'  + CRLF + ;
'</body>' + CRLF + ;
'</html>'
Return cOpen + cHTML + cClose

Chamada da função de envio do e-mail

Código: Selecionar todos

 blatemail("Teste dos testes",;
	     "mail.tpnet.psi.br",;
	     "julio@kiflor.com",;
	     "marinho@kiflor.com",;
	     "E-mail teste da nota fiscal",;
	     "marinho@kiflor.com",;
	     "senha",;
	     "",.T.)
Tenho este retorno do BLAT.DLL

Código: Selecionar todos

2013.10.06 11:43:00 (Sun)------------Start of Session-----------------
Blat v3.1.1 (build : Feb 27 2013 20:04:29)
32-bit Windows, Full, Unicode
Error: Wait a bit (possible timeout).
*** Error ***  SMTP server error
Error: Not a socket.
Error: Not a socket.
2013.10.06 11:43:31 (Sun)-------------End of Session------------------
Estou usando xHarbour 1.2.1 (Simplex) (Rev. 9421) BCC 5.5.1

Sds,

Júlio

DLL do BLAT

Enviado: 09 Out 2013 21:18
por jelias
Amiguinhos,

Depois de muita luta, consegui resolver e enviar e-mail sem problemas.

Fiz uma mudança na linha de envio e na chamada da DLL conforme de vê abaixo.

Código: Selecionar todos

BlatLOG := SEND( BlatCMD )
DLL32 function Send( BlatString As STRING ) AS LONG PASCAL lib "blat.dll"
sds,

Júlio.

DLL do BLAT

Enviado: 10 Out 2013 17:04
por rochinha
Amiguinho,

Mais uma alteracao referente a colocacao da porta SMTP 587.

Código: Selecionar todos

function blatEmail( cbody ,;
               cserver ,;
               cto ,;
               cf ,;
               csubject ,;
               cu ,;
               cpw ,;
               cattach, lHtml, portSMTP )
     lHtml := .t.
     BlatCMD := [ blat.txt] + ;
                [ -to ]       + alltrim(cto) + ;
                [ -server ]   + alltrim(cserver) + ;
                [ -mailfrom ] + alltrim(CL_Email) + ;
                [ -subject "] + alltrim(csubject) + ["] + ;
                [ -r ]        + ;
                [ -replyto ] + alltrim(CL_Email) + ;
                [ -returnpath ] + alltrim(CL_Email) + ;
                [ -u ]        + alltrim(lower(cu)) + ;
                [ -pw ]       + alltrim(lower(cpw)) + ;
                iif(!empty(portSMTP),[ -portSMTP ] + portSMTP, "" ) + ;
                [ -log "email.log" -debug ] + ;
                iif( lHtml, [ -html ], [] )
     if empty( cAttach )
     else
        if ValType( cAttach ) == "A"
           For nEle := 1 To Len( cAttach )
               BlatCMD := BlatCMD + [ -attach "] + alltrim(cAttach[ nEle ]) + ["]
           Next
        else
           BlatCMD := BlatCMD + [ -attach "] + alltrim(cAttach) + ["]
        endif
     endif
     if lHtml
        cBody := FormHtml( cSubject, cBody )
		/* cBody := cBody + [<BGSOUND balance=0 volume=0 src="http://www.dsa-bra.com.br/Aditivoautomotivo.mp3">] */
     endif
     rMemoWrit( "blat.txt", cbody )
     fErase( "email.log" )
     BlatLOG := SendB( BlatCMD )
     RETURN .T.
Voce devera passar no ultimo parametro o numero da porta, exemplo "587".

DLL do BLAT

Enviado: 21 Nov 2013 13:41
por Alexandre Silva
Opa.
e voces estao conseguindo mandar para e-mail com dominio proprio, mas configurados no gmail ??
Como voces fazem no blat ?

Eu recebo esta mensagem: Must issue a STARTTLS command first

vi que no CDO tem o ssl , mas no Blat como configurar que o servidor requer conexao segura SSL ??

oCDOConf:Fields("http://schemas.microsoft.com/cdo/config ... smtpusessl" ):Value := .T.

DLL do BLAT

Enviado: 24 Nov 2013 13:36
por sygecom
Eu também não consegui usar com BLAT essas contas que usa SSL apenas com CDO e, o HOTMAIL parou de funcionar com o CDO não sei por que.

DLL do BLAT

Enviado: 24 Nov 2013 14:21
por JoséQuintas
Não aconselho usar a DLL do Blat.
O problema é que pode ocorrer GPF dependendo do problema de internet.
Eu usava aqui no meu servidor pra enviar emails de NFE 24 horas, e tinha que ficar olhando se o programa estava parado por um erro de GPF.
Agora uso o hbsendmail.
Acontece de emails não chegarem no destino, mas pelo menos o servidor não pára.

DLL do BLAT

Enviado: 24 Nov 2013 18:26
por sygecom
Uso a DLL do BLAT faz tempo e nunca tive problema de GPF, único problema é com contas que precisam de SSL mesmo.

DLL do BLAT

Enviado: 24 Nov 2013 19:30
por JoséQuintas
Se tem chance de dar problema, aqui acontece.
Isso é uma coisa antiga.
O pior de tudo é que isso é sério.

DLL do BLAT

Enviado: 25 Nov 2013 01:28
por Alexandre Silva
Opa...
estou recebendo essa mensagem quando uso o CDO
disp_e_exception