Página 1 de 1

e-mail no Harbour 3.2

Enviado: 30 Mar 2025 11:05
por Softwhouse
Anos atrás utilizava essa rotina, compilada no Harbour 3.4, para enviar e-mail e funcionava perfeitamente. Preciso agora que funcione no Harbour 3.2 e não consigo fazer. Alguém sabe o que precisa mudar ?

Código: Selecionar todos

#require 'hbssl'
#require 'hbtip'

#if ! defined( __HBSCRIPT__HBSHELL )
REQUEST __HBEXTERN__HBSSL__
#endif

#include "simpleio.ch"

Static Function Mail(cHost, nPort, lSSL, cFrom, cTo, cCC, cBCC, cMsg, cSubject, aFiles, cPassword, lRead)

Local lStartTLS := .F.

cHost := Lower( cHost )

   /* SMTPS trabalha com SSL/TLS na porta 465 e com STARTTLS
      na porta 587. O modo STARTTLS e totalmente automatico e requer
      que SSL/TLS seja desativado primeiro (ele sera ativado em
      pedido apos o comando STARTTLS)*/  
   

hb_default( @nPort, Iif( lStartTLS, 587, 465 ) )

   Do Case
      Case cHost == "google" .Or. "@gmail.com" $ cFrom .Or. "@googlemail.com" $ cFrom
           cHost := "smtp.gmail.com"
      Case cHost == "office365"
           cHost := "smtp.office365.com"; lSTARTTLS := .T.
      Case cHost == "outlook" .Or. "@outlook.com" $ cFrom .Or. "hotmail.com" $ cFrom .Or. "@hotmail.com" $ cFrom
           cHost := "smtp-mail.outlook.com"; lSTARTTLS := .T.
      Case cHost == "uol" .Or. "@uol.com.br" $ cFrom
           cHost := "smtps.uol.com.br"
      Case cHost == "yahoo" .Or. "@yahoo.com" $ cFrom
           cHost := "smtp.mail.yahoo.com"
      Case cHost == "ig" .Or. "@ig.com.br" $ cFrom
           cHost := 'smtp.ig.com.br'
   EndCase

If  Tip_MailSend( ;
        cHost, ;
        nPort, ;
        cFrom, ;
        cTo, ;
        cCC /* CC */, ;
        cBCC /* BCC */, ;
        cMsg /* Corpo Mensagem */, ;
        cSubject /* Assunto */, ;
        aFiles /* attachment */, ;
        cFrom, ;
        cPassword, ;
        "", ;
        NIL /* nPriority */, ;
        lRead /* lRead */, ;
        .F. /* lTrace */, ;
        .F., ;
        NIL /* lNoAuth */, ;
        NIL /* nTimeOut */, ;
        NIL /* cReplyTo */, ;
        nPort == 465 )

        Alert('e-mail enviado com sucesso!')
Else
        Alert( 'Nao foi  possivel enviar;o  e-mail. Verifique  as; configuracoe de e-mail. ')
EndIf

Return(.T.)

Conteúdo hbp:
Demo.prg
hbssl.hbc
hbtip.hbc

Dlls inclusas na pasta:
libeay32.dll
libssl32.dll
ssleay32.dll

Compila mas apresenta a seguinte mensagem ao executar:

Não foi possível localizar o ponto de entrada do procedimento EVP_rc5_32_12_16_cbc na biblioteca de vínculo dinâmico C:\email\demo.exe

e-mail no Harbour 3.2

Enviado: 30 Mar 2025 12:09
por JoséQuintas
Provavelmente DLLs erradas.
Não me pergunte, porque não uso essas coisas opcionais.

Provavelmente tem diferença conforme o compilador, versão de harbour, 32 ou 64 bits.
Provavelmente mais fácil com mingw, usando MSYS2 que baixa tudo de programação.
Provavelmente diferente conforme lib GUI adicional usada.
As LIBs GUI costumam ter sua própria versão de quase tudo, ao invés de atualizar harbour/xharbour.

Resumindo:
o que funciona pra um pode não funcionar pra outro, detalhe mais sobre suas ferramentas, pra ver se alguém usa igual.
Talvez seja necessário gerar novamente o harbour/xharbour com DLLs e CHs corretos(*)

e-mail no Harbour 3.2

Enviado: 30 Mar 2025 14:43
por Softwhouse
Harbour 3.2.0dev (r2503251254), console, sem GUI, só o demo mesmo. Win32OpenSSL-3_4_1. Código de 10 anos atrás.

e-mail no Harbour 3.2

Enviado: 30 Mar 2025 19:54
por Itamar M. Lins Jr.
Olá!
O código é velho, mas a DLL é nova.(desse ano)
Tem que extrair a lib .a dela.
Vc fez isso ?
Tá usando GCC ?

Saudações,
Itamar M. Lins Jr.

e-mail no Harbour 3.2

Enviado: 30 Mar 2025 22:29
por lucimauro
Ola, essa dica peguei aqui no site
adiciona no seu .HBP

Código: Selecionar todos

-fullstatic

e-mail no Harbour 3.2

Enviado: 01 Abr 2025 21:11
por Softwhouse
Lucimauro, obrigado pela dica, era esse o problema. Valeu!