Clipper On Line • Ver Tópico - Lib HbCurl para envio de email

Lib HbCurl para envio de email

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

Moderador: Moderadores

 

Lib HbCurl para envio de email

Mensagempor asimoes » 02 Mai 2018 11:37

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
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 de usuário

asimoes
Colaborador

Colaborador
 
Mensagens: 4919
Data de registro: 26 Abr 2007 16:48
Cidade/Estado: RIO DE JANEIRO-RJ
Curtiu: 341 vezes
Mens.Curtidas: 258 vezes

Lib HbCurl para envio de email

Mensagempor rochinha » 02 Mai 2018 12:58

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 fivolution@hotmail.com. Agradecido.

@braços : ? )

A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
Avatar de usuário

rochinha
Membro Master

Membro Master
 
Mensagens: 4545
Data de registro: 18 Ago 2003 20:43
Cidade/Estado: São Paulo - Brasil
Curtiu: 806 vezes
Mens.Curtidas: 245 vezes

Lib HbCurl para envio de email

Mensagempor asimoes » 02 Mai 2018 13:13

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 de usuário

asimoes
Colaborador

Colaborador
 
Mensagens: 4919
Data de registro: 26 Abr 2007 16:48
Cidade/Estado: RIO DE JANEIRO-RJ
Curtiu: 341 vezes
Mens.Curtidas: 258 vezes

Lib HbCurl para envio de email

Mensagempor JoséQuintas » 02 Mai 2018 14:52

[quote]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, multithread, dbfcdx, ADO+MySql, PNotepad
"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 de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18127
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1215 vezes

Lib HbCurl para envio de email

Mensagempor asimoes » 02 Mai 2018 15:37

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 de usuário

asimoes
Colaborador

Colaborador
 
Mensagens: 4919
Data de registro: 26 Abr 2007 16:48
Cidade/Estado: RIO DE JANEIRO-RJ
Curtiu: 341 vezes
Mens.Curtidas: 258 vezes

Lib HbCurl para envio de email

Mensagempor asimoes » 02 Mai 2018 19:16

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

    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 de usuário

asimoes
Colaborador

Colaborador
 
Mensagens: 4919
Data de registro: 26 Abr 2007 16:48
Cidade/Estado: RIO DE JANEIRO-RJ
Curtiu: 341 vezes
Mens.Curtidas: 258 vezes

Lib HbCurl para envio de email

Mensagempor asimoes » 03 Mai 2018 08:23

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 198 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)
Avatar de usuário

asimoes
Colaborador

Colaborador
 
Mensagens: 4919
Data de registro: 26 Abr 2007 16:48
Cidade/Estado: RIO DE JANEIRO-RJ
Curtiu: 341 vezes
Mens.Curtidas: 258 vezes

Lib HbCurl para envio de email

Mensagempor cjp » 10 Set 2018 14:57

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
cjp
Usuário Nível 6

Usuário Nível 6
 
Mensagens: 1531
Data de registro: 19 Nov 2010 21:29
Cidade/Estado: paraná
Curtiu: 10 vezes
Mens.Curtidas: 20 vezes

Lib HbCurl para envio de email

Mensagempor JoséQuintas » 06 Set 2019 00:53

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, multithread, dbfcdx, ADO+MySql, PNotepad
"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 de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18127
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1215 vezes

Lib HbCurl para envio de email

Mensagempor JoséQuintas » 06 Set 2019 11:51

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, multithread, dbfcdx, ADO+MySql, PNotepad
"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 de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18127
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1215 vezes

Lib HbCurl para envio de email

Mensagempor JoséQuintas » 07 Set 2019 10:35

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, multithread, dbfcdx, ADO+MySql, PNotepad
"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 de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18127
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1215 vezes

Lib HbCurl para envio de email

Mensagempor JoséQuintas » 07 Set 2019 11:10

José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"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 de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18127
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1215 vezes

Lib HbCurl para envio de email

Mensagempor JoséQuintas » 07 Set 2019 22:01

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.

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, multithread, dbfcdx, ADO+MySql, PNotepad
"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 de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18127
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1215 vezes

Lib HbCurl para envio de email

Mensagempor rochinha » 09 Set 2019 10:20

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 fivolution@hotmail.com. Agradecido.

@braços : ? )

A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
Avatar de usuário

rochinha
Membro Master

Membro Master
 
Mensagens: 4545
Data de registro: 18 Ago 2003 20:43
Cidade/Estado: São Paulo - Brasil
Curtiu: 806 vezes
Mens.Curtidas: 245 vezes

Lib HbCurl para envio de email

Mensagempor JoséQuintas » 09 Set 2019 10:36

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, multithread, dbfcdx, ADO+MySql, PNotepad
"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 de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18127
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1215 vezes

Próximo



Retornar para Harbour

Quem está online

Usuários vendo este fórum: Nenhum usuário registrado online e 4 visitantes


Ola Amigo, espero que meu site e forum tem lhe beneficiado, com exemplos e dicas de programacao.
Entao divulgue o link da Doacao abaixo para seus amigos e redes sociais ou faça uma doacao para o site forum...
MUITO OBRIGADO PELA SUA DOACAO!
Faça uma doação para o forum
cron
v
Olá visitante, seja bem-vindo ao Fórum Clipper On Line!
Efetue o seu login ou faça o seu Registro