Lib HbCurl para envio de email

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

Moderador: Moderadores

Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

Lib HbCurl para envio de email

Mensagem por asimoes »

Prezados,

Estou tentado fazer testes com CURL usando a lib hbcurl, eu consigo gerar as libs da hbcurl mas estas libs ssh2, nghttp2 e brotli
não estão na pasta \HB32MSYS\lib\win\mingw da minha compilação harbour 3.4

Alguém tem o caminho ou a dica para gerar essas libs?
hbmk2: Compilando...
hbmk2: Linkando... demo.exe
G:/hb32msys/comp/mingw32/bin/../lib/gcc/i686-w64-mingw32/7.3.0/../../../../i686-
w64-mingw32/bin/ld.exe: cannot find -lssh2
G:/hb32msys/comp/mingw32/bin/../lib/gcc/i686-w64-mingw32/7.3.0/../../../../i686-
w64-mingw32/bin/ld.exe: cannot find -lnghttp2
G:/hb32msys/comp/mingw32/bin/../lib/gcc/i686-w64-mingw32/7.3.0/../../../../i686-
w64-mingw32/bin/ld.exe: cannot find -lbrotli
No hbcurl.hbc elas são usadas

Código: Selecionar todos

description=libcurl wrapper (IP communication)

incpaths=.

headers=${hb_name}.ch

libs=${_HB_DYNPREF}${hb_name}${_HB_DYNSUFF}

libpaths=/usr/local/opt/curl/lib{darwin}
libpaths=${HBMK_DIR_CURL}/../lib{allwinar&HBMK_HAS_CURL}

{!allwin|allwinar}libs=curl
{allwin&!allwinar}libs=libcurl

# NOTE: Static lib may require additional libs to be linked:
#       e.g. OpenSSL, nghttp2 or else, depending on which
#       TLS backend and other optional dependencies were
#       enabled during the build of libcurl itself.
{allwin&static&!hbdyn&allwinar}libs=ssh2 nghttp2 ssl crypto brotli
#{allwin&static&!hbdyn&allwinar}libs=brotli
libs=${HB_CURL_LIBS_EXTRA}
{allwin}libs=crypt32 wldap32
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar do usuário
rochinha
Administrador
Administrador
Mensagens: 4664
Registrado em: 18 Ago 2003 20:43
Localização: São Paulo - Brasil
Contato:

Lib HbCurl para envio de email

Mensagem por rochinha »

Amiguinhos,

asimoes
Acho que estas bibliotecas você agrega separadamente, veja se fazem parte do pacote OpenSSL.
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
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

Lib HbCurl para envio de email

Mensagem por asimoes »

Rochinha,

Procurei na OpenSSL, não achei, e não tem nenhuma dica na contrib\hbcurl para gerar essas libs
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Lib HbCurl para envio de email

Mensagem por JoséQuintas »

não estão na pasta \HB32MSYS\lib\win\mingw da minha compilação harbour 3.4[/quoe]

Estranhei nome de pasta 32 sendo 3.4...

Veja na pasta de geração das LIBs.
Se no momento da geração do Harbour os componentes opcionais não existirem, ou se não estiverem configurados corretamente, as LIBs não são geradas.
Como é opcional... gerando ou não, é considerado normal.

Veja a geração manual da LIB, se indica o que falta.
Pode ser LIB gerada para DLL, e é gerada no momento da geração do Harbour, ou da LIB

Eu não uso nada opcional, pra não precisar ficar resolvendo essas chatices.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

Lib HbCurl para envio de email

Mensagem por asimoes »

Quintas vou explicar:

HB32MSYS

HB = Harbour
32 = 32 bits
MSYS = A versão do Mingw é do MSYS

A compilação é com harbour 3.4 fork, a versão do CURL eu baixei daqui: https://curl.haxx.se/download.html é só procurar pelo nome do Viktor não tem erro.

Na compilação do harbour 3.4 fork eu aponto SET HB_WITH_CURL = D:\curl-7.59.0-win32-mingw\include

As libs são geradas exceto essas que eu informei acima.
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

Lib HbCurl para envio de email

Mensagem por asimoes »

Pessoal,

Consegui usar a lib HbCurl enviando de uma conta do gmail

Removi ssh2, nghttp2 e brotli


#{allwin&static&!hbdyn&allwinar}libs=ssh2 nghttp2 ssl crypto brotli

{allwin&static&!hbdyn&allwinar}libs=ssl crypto

O Teste: (suprimi muita coisa) mas no final funcionou, tem que retornar 0 (zero), 0=sucesso no envio

Precisa estar presente na pasta do executável: libcrypto-1_1.dll, libssl-1_1.dll e libcurl.dll

Código: Selecionar todos

    cHTML := ;
      e"<html><body>\r\n" + ;
      e"<p>This is the inline <strong>HTML</strong> message of the email.</p>" + ;
      e"<br>\r\n" + ;
      e"<p>It could be a lot of HTML data that would be displayed by " + ;
      e"email viewers able to handle HTML.</p>" + ;
      e"</body></html>\r\n"
   
   
   cHost := "smtps://smtp.gmail.com"

   cFrom := "seuemail@gmail.com"

   cTo   := "destinatario@gmail.com"

   cUser := "seuusuario" //usuário do gmail
   
   cPassword := "suasenha" //senha do gmail
   
   cSubject := "Assunto do Email"
   
   cAlias   := "teste"
   
   cAlias    := cAlias + [ <] + cFrom + [> ]

   cFrom := "<" + ( cUser := hb_curl_mail_address_to_email( cFrom ) ) + ">"
   
   cTo := "<" + hb_curl_mail_address_to_email( cTo ) + ">"
   
   curl_global_sslset( -1,, @tmp )
   
   curl_global_init()

   IF Empty( curl := curl_easy_init() )
       hwg_MsgStop("Failed to init")
   ENDIF
   
   curl_easy_setopt( curl, HB_CURLOPT_USE_SSL, HB_CURLUSESSL_TRY )

   curl_easy_setopt( curl, HB_CURLOPT_UPLOAD )

   curl_easy_setopt( curl, HB_CURLOPT_URL, cHost )

   curl_easy_setopt( curl, HB_CURLOPT_PROTOCOLS, ;
   hb_bitOr( HB_CURLPROTO_SMTPS, HB_CURLPROTO_SMTP ) )

   curl_easy_setopt( curl, HB_CURLOPT_TIMEOUT_MS, 15000 )

   curl_easy_setopt( curl, HB_CURLOPT_VERBOSE, .T. )

   curl_easy_setopt( curl, HB_CURLOPT_USERNAME, cUser )

   curl_easy_setopt( curl, HB_CURLOPT_PASSWORD, cPassword )

   curl_easy_setopt( curl, HB_CURLOPT_MAIL_FROM, cFrom )

   curl_easy_setopt( curl, HB_CURLOPT_MAIL_RCPT, { cFrom } )
 
   cText := tip_MailAssemble( ;
            "hbtip " + cFrom, ;
            { cTo }, ;
            /* aCC */, ;
            cHTML, ;
            cSubject, ;
            { "CLASSE10.png" } /* attachments */, ;
            /* nPriority */, ;
            /* lRead */, ;
            /* cReplyTo */, ;
            /* cCharset */, ;
            /* cEncoding */, ;
            .T. /* lBodyHTML */, ;
            /* bSMIME */ )
            
   curl_easy_setopt( curl, HB_CURLOPT_UL_BUFF_SETUP, cText )
   
   curl_easy_setopt( curl, HB_CURLOPT_INFILESIZE_LARGE, hb_BLen( cText ) )

   hwg_MsgInfo( "Result: " + valtoprg(curl_easy_perform( curl )) )

   curl_easy_cleanup( curl )
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

Lib HbCurl para envio de email

Mensagem por asimoes »

Quem quiser testar a lib:

Consegui gerar o teste somente com a dll libcurl.dll que tem que estar presente na pasta do executável.

Só funciona com harbour 3.4 a 3.2 não tem suporte para email, mas poderia ser feito um merge para funcionar.
h-EmailCURL.zip
Teste com HbCurl + GMAIL
(1.93 MiB) Baixado 341 vezes
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
cjp
Usuário Nível 6
Usuário Nível 6
Mensagens: 1563
Registrado em: 19 Nov 2010 22:29
Localização: paraná
Contato:

Lib HbCurl para envio de email

Mensagem por cjp »

Gostaria de saber se essa lib funciona apenas com minigui, ou se também funcionaria em modo gráfico.

Estou precisando de uma rotina para envio de e-mails pela minha conta no GMail.
Inacio de Carvalho Neto
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Lib HbCurl para envio de email

Mensagem por JoséQuintas »

hazael escreveu:Anos atrás eu usava o hb_sendmail() que parece deixou de existir e virou algo como win_mailsend() ou algo do tipo, que também já testei e nunca mais consegui enviar emails... antigamente era muito fácil, mas agora ficou muito difícil...
O que mudou é que muitos e-mails agora usam comunicação segura, que não pode ser feita pelos métodos antigos.
Várias contas ainda aceitam sem esse protocolo.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Lib HbCurl para envio de email

Mensagem por JoséQuintas »

hazael escreveu:A única coisa que funcionou até agora foi usando uma DLL do Blat que consegui de um exemplo do Rochinha.
Explique melhor, isso chamou atenção, porque se funciona no Blat deveria funcionar no Harbour.
Pelo menos no Harbour 3.4, que não obriga que exista libcurl.
Enviei email tanto pelo Windows quanto pelo Linux por ele.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Lib HbCurl para envio de email

Mensagem por JoséQuintas »

hazael escreveu:Parece que o asimoes conseguiu, pedi para ele postar o exemplo...
Não entendi. O Harbour já vém com exemplo.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Lib HbCurl para envio de email

Mensagem por JoséQuintas »

https://github.com/vszakats/harbour-cor ... /email.prg

Faz parte dos fontes baixados do Harbour 3.4
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Lib HbCurl para envio de email

Mensagem por JoséQuintas »

hazael escreveu:Pois é... para mim retorna .F. em qualquer conta de email, com a porta 465 ou 25 ou 587 ou 2525.Mas em outros clientes de email, blat, smtpsend, etc... funciona com a porta 25 sem problemas...
Vai ver está esquecendo de alguma coisa que coloca nos outros, ou que nos outros é automático.
Provavelmente a autenticação pop3.

Código: Selecionar todos

METHOD SendUsingHarbour() CLASS ze_SendMailClass

   RETURN tip_MailSend( ::cServer, ::nPort, ::cFrom, ::acTo, ::acCc, ::acBcc, ::cFileBody, ::cSubject, ::acAttachment, ::cUser, ::cPassword, ;
      iif( Empty( ::cServerPop ), NIL, ::cServerPop ), ::nPriority, ::lConfirm, ::lTrace, ! Empty( ::cServerPop ), ;
      ::lNoAuth, ::nTimeOut, /* cReplyTo */, ::lTLS )
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

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

Lib HbCurl para envio de email

Mensagem por rochinha »

Amiguinhos,

Com certeza o caracter em questão deve estar sendo retirado da senha internamente pela função que você usa. Tente enviá-lo no formato CHR( xxx ). Ao invés de mandar "senha@123" mande "senha"+chr(xxx)+"123"
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
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Lib HbCurl para envio de email

Mensagem por JoséQuintas »

Já passaram a solução no harbour-users.
Ao invés de colocar os parâmetros diretamente nem uma única linha, atribuir os valores depois.
Numa única linha a arroba é separador de parâmetros, por isso não aceita a senha com arroba.

Mas pra isso, precisaria alterar a função de enviar email do Harbour/hbtip.
Acho que podemos alterar isso num fork.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Responder