Página 1 de 2
Lib HbCurl para envio de email
Enviado: 02 Mai 2018 11:37
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
Lib HbCurl para envio de email
Enviado: 02 Mai 2018 12:58
por rochinha
Amiguinhos,
asimoes
Acho que estas bibliotecas você agrega separadamente, veja se fazem parte do pacote OpenSSL.
Lib HbCurl para envio de email
Enviado: 02 Mai 2018 13:13
por asimoes
Rochinha,
Procurei na OpenSSL, não achei, e não tem nenhuma dica na contrib\hbcurl para gerar essas libs
Lib HbCurl para envio de email
Enviado: 02 Mai 2018 14:52
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.
Lib HbCurl para envio de email
Enviado: 02 Mai 2018 15:37
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.
Lib HbCurl para envio de email
Enviado: 02 Mai 2018 19:16
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 )
Lib HbCurl para envio de email
Enviado: 03 Mai 2018 08:23
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.
Lib HbCurl para envio de email
Enviado: 10 Set 2018 14:57
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.
Lib HbCurl para envio de email
Enviado: 06 Set 2019 00:53
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.
Lib HbCurl para envio de email
Enviado: 06 Set 2019 11:51
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.
Lib HbCurl para envio de email
Enviado: 07 Set 2019 10:35
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.
Lib HbCurl para envio de email
Enviado: 07 Set 2019 11:10
por JoséQuintas
Lib HbCurl para envio de email
Enviado: 07 Set 2019 22:01
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 )
Lib HbCurl para envio de email
Enviado: 09 Set 2019 10:20
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"
Lib HbCurl para envio de email
Enviado: 09 Set 2019 10:36
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.