Automatizar um envio de relatorio via email [EDITADO]

Projeto [x]Harbour - Compilador de código aberto compatível com o Clipper.

Moderador: Moderadores

Avatar do usuário
rochinha
Administrador
Administrador
Mensagens: 4664
Registrado em: 18 Ago 2003 20:43
Localização: São Paulo - Brasil
Contato:

Automatizar um envio de relatorio via email [EDITADO]

Mensagem por rochinha »

Amiguinhos,

Este exemplo é para envio usando BLAT.DLL:

Código: Selecionar todos

function blatEmail( cbody ,;
               cserver ,;
               cto ,;
               cf ,;
               csubject ,;
               cu ,;
               cpw ,;
               cattach, lHtml )
     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)) + ;
                [ -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 := SendB( BlatCMD )
     RETURN .T.

DLL32 FUNCTION SendB( sBlatString AS STRING ) AS LONG PASCAL ;
      FROM "SendBlat" 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
OPS! LINK QUEBRADO? Veja ESTE TOPICO antes e caso não encontre ENVIE seu email com link do tópico para [url=mailto://fivolution@hotmail.com]fivolution@hotmail.com[/url]. Agradecido.

@braços : ? )

A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
Avatar do usuário
HASA
Colaborador
Colaborador
Mensagens: 1088
Registrado em: 01 Set 2003 19:50
Localização: São Paulo
Contato:

Automatizar um envio de relatorio via email [EDITADO]

Mensagem por HASA »

:))
Olá Rochiha, 2 questões:

1 - Qual das opções vc realmente acha 100% funcional, batzinho ou DLL ?

2 - Onde baixar o EXE e a DLL, são Free ?

HASA
:{
Avatar do usuário
rochinha
Administrador
Administrador
Mensagens: 4664
Registrado em: 18 Ago 2003 20:43
Localização: São Paulo - Brasil
Contato:

Automatizar um envio de relatorio via email [EDITADO]

Mensagem por rochinha »

Amiguinho,

A opção com .EXE esta ativa no módulo de erros pelo fato de ser pouco usada, foi a primeira implementação. SauDOSismo.

A versão .DLL é melhor quando se trata de envio em massa, já que a mesma subirá para a memória junto com o sistema e a rotina de envio fará acesso direto a ela.
OPS! LINK QUEBRADO? Veja ESTE TOPICO antes e caso não encontre ENVIE seu email com link do tópico para [url=mailto://fivolution@hotmail.com]fivolution@hotmail.com[/url]. Agradecido.

@braços : ? )

A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
Avatar do usuário
HASA
Colaborador
Colaborador
Mensagens: 1088
Registrado em: 01 Set 2003 19:50
Localização: São Paulo
Contato:

Automatizar um envio de relatorio via email [EDITADO]

Mensagem por HASA »

:))
Beleza Rochinha, só ficou o onde baixar ?
:)Pos
Avatar do usuário
rochinha
Administrador
Administrador
Mensagens: 4664
Registrado em: 18 Ago 2003 20:43
Localização: São Paulo - Brasil
Contato:

Automatizar um envio de relatorio via email [EDITADO]

Mensagem por rochinha »

OPS! LINK QUEBRADO? Veja ESTE TOPICO antes e caso não encontre ENVIE seu email com link do tópico para [url=mailto://fivolution@hotmail.com]fivolution@hotmail.com[/url]. Agradecido.

@braços : ? )

A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
Avatar do usuário
HASA
Colaborador
Colaborador
Mensagens: 1088
Registrado em: 01 Set 2003 19:50
Localização: São Paulo
Contato:

Automatizar um envio de relatorio via email [EDITADO]

Mensagem por HASA »

:(
Bom dia, Rochinha, infelizmente revirei o site e em tudo quanto foi link alguns poucos levaram a alguma outra pagina e outros estavão quebrados, mas... principalmente sobre a DLL, o executavel ainda aparece.
Hasa
Avatar do usuário
rochinha
Administrador
Administrador
Mensagens: 4664
Registrado em: 18 Ago 2003 20:43
Localização: São Paulo - Brasil
Contato:

Automatizar um envio de relatorio via email [EDITADO]

Mensagem por rochinha »

OPS! LINK QUEBRADO? Veja ESTE TOPICO antes e caso não encontre ENVIE seu email com link do tópico para [url=mailto://fivolution@hotmail.com]fivolution@hotmail.com[/url]. Agradecido.

@braços : ? )

A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
Avatar do usuário
HASA
Colaborador
Colaborador
Mensagens: 1088
Registrado em: 01 Set 2003 19:50
Localização: São Paulo
Contato:

Automatizar um envio de relatorio via email [EDITADO]

Mensagem por HASA »

:D
Ai sim heimmm, agora vou testar, testar e testar, vamos ver se ficará legal,
Valeu, Rocha
:{
Avatar do usuário
momente
Usuário Nível 3
Usuário Nível 3
Mensagens: 496
Registrado em: 03 Mar 2005 11:53
Localização: São Carlos-SP
Contato:

Automatizar um envio de relatorio via email [EDITADO]

Mensagem por momente »

Amigo Rochinha,

Estou tentando compilar com o xHarbour, e esta dando erro na linha:

Código: Selecionar todos

  fErase( "posthilit">email.log" ) 


e na linha:

Código: Selecionar todos

 FROM "SendBlat" LIB "Blat.dll" 
Oque será que esta faltando?

Obrigado
:-o
Rogerio L. Momenté
Nada é tão perfeito que não possamos melhorar.
Nunca se explique. Seus amigos não precisam e seus inimigos não vão acreditar.
www.looksystem.com.br
Avatar do usuário
rochinha
Administrador
Administrador
Mensagens: 4664
Registrado em: 18 Ago 2003 20:43
Localização: São Paulo - Brasil
Contato:

Automatizar um envio de relatorio via email [EDITADO]

Mensagem por rochinha »

Amiguinho,

Não existe este trecho no código:

fErase( "posthilit">email.log" )

O código correto é:

fErase( "email.log" )
OPS! LINK QUEBRADO? Veja ESTE TOPICO antes e caso não encontre ENVIE seu email com link do tópico para [url=mailto://fivolution@hotmail.com]fivolution@hotmail.com[/url]. Agradecido.

@braços : ? )

A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
Avatar do usuário
momente
Usuário Nível 3
Usuário Nível 3
Mensagens: 496
Registrado em: 03 Mar 2005 11:53
Localização: São Carlos-SP
Contato:

Automatizar um envio de relatorio via email [EDITADO]

Mensagem por momente »

Verdade Rochinha,

Acredito que tenha sido no momento da cópia,

Consegui compilar sem gerar erros. Apenas não esta acontecendo nada. Segue parte do Código.

Código: Selecionar todos

function EnvEmail(cbody , cserver, cto, cf, csubject, cu, cpw, cattach, lHtml)
     lHtml := .t.

     BlatCMD := [ blat.txt] + ;
                [ -to ]       + alltrim(cto) + ;
                [ -server ]   + alltrim(cserver) + ;
                [ -mailfrom ] + alltrim(cTo) + ;
                [ -subject  ] + alltrim(csubject) + ;
                [ -r ]        + ;
                [ -replyto ] + alltrim(cTo) + ;
                [ -returnpath ] + alltrim(cTo) + ;
                [ -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 := SendB( BlatCMD )

    RET := DLLCALL(nDLL_BLAT,32,"SendBlat",BlatCMD)
	  
    If RET == 1
  	MsgBox1("Falha no envio do email')
    Endif	

RETURN .T.
A função DLLCALl esta retornando NUL :%
Rogerio L. Momenté
Nada é tão perfeito que não possamos melhorar.
Nunca se explique. Seus amigos não precisam e seus inimigos não vão acreditar.
www.looksystem.com.br
Avatar do usuário
rochinha
Administrador
Administrador
Mensagens: 4664
Registrado em: 18 Ago 2003 20:43
Localização: São Paulo - Brasil
Contato:

Automatizar um envio de relatorio via email [EDITADO]

Mensagem por rochinha »

Amiguinho,

Tente uma delas:

Código: Selecionar todos

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

DLL32 FUNCTION BlatSend( BlatCMD AS STRING ) AS LONG PASCAL;
      FROM "Send" LIB "Blat.dll" 
OPS! LINK QUEBRADO? Veja ESTE TOPICO antes e caso não encontre ENVIE seu email com link do tópico para [url=mailto://fivolution@hotmail.com]fivolution@hotmail.com[/url]. Agradecido.

@braços : ? )

A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
Avatar do usuário
HASA
Colaborador
Colaborador
Mensagens: 1088
Registrado em: 01 Set 2003 19:50
Localização: São Paulo
Contato:

Automatizar um envio de relatorio via email [EDITADO]

Mensagem por HASA »

:))
Para aqueles que usam MiniGUI 1.9 Extended Edition (Build 98) achei por um acaso:

C:\MiniGUI\SAMPLES\Advanced\BlatMail

Usando a DLL com a Dll na pasta é mole.

:xau
Avatar do usuário
momente
Usuário Nível 3
Usuário Nível 3
Mensagens: 496
Registrado em: 03 Mar 2005 11:53
Localização: São Carlos-SP
Contato:

Automatizar um envio de relatorio via email [EDITADO]

Mensagem por momente »

Amigo,

Dei uma olhada neste exemplo da MiniGUI e achei interessante. Acho que vai dar certo para o que preciso.

Valeu pela dica!

Obrigado Rochinha tmb!

:-Y
Rogerio L. Momenté
Nada é tão perfeito que não possamos melhorar.
Nunca se explique. Seus amigos não precisam e seus inimigos não vão acreditar.
www.looksystem.com.br
Avatar do usuário
fertriod3
Usuário Nível 1
Usuário Nível 1
Mensagens: 36
Registrado em: 18 Set 2009 14:05
Localização: Tietê-SP

Automatizar um envio de relatorio via email [EDITADO]

Mensagem por fertriod3 »

Olá pessoal do fórum.

Postei algumas vezes e fiquei um tempão sem postar. Sobre a duvida do colega, a biblioteca SIBRA resolve certinho o problema. Gera PDF (tem que ter uma impressora PDF instalada), e envia pra qualquer impressora USB.
Acontece que ela também dá um erro de "Programa muito extenso pra ser colocado na memória" e ainda não resolvi.
Se alguem tiver a solução, por favor compartilhe.
Fernando Lara
fernando.pareschi@gmail.com
Clipper 5.2 - Blinker 7 - Samba
xHarbour
Responder