Clipper On Line • Ver Tópico - hb_sendmail() com SSL em xHarbour 1.2.3

hb_sendmail() com SSL em xHarbour 1.2.3

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

Moderador: Moderadores

 

hb_sendmail() com SSL em xHarbour 1.2.3

Mensagempor fernando_volp » 10 Nov 2020 16:21

Boa tarde a todos!

Uso o xHarbour com o hb_sendmail() para enviar e-mails a muito tempo, sem problemas.

Porem a empresa que presto serviço mudou para o office365, e o mesmo utiliza autenticação SSL, e não estou conseguindo adaptar o hb_sendmail().

Pesquisei em alguns posts do grupo e muitos falam sobre linkar as libs do OpenSSL e TipSSL.lib, ssleay32.lib e libeay32.lib.

Tentei mas sem sucesso.

Alguém já teve essa necessidade e conseguiu fazer funcionar.

Desde já agradeço.

Segue um código de exemplo, com PRG e EXE.XBP

FUNCTION MAIN
   cls
      
   **************
   ** Funciona **
   **************
   mDe:="sistema@volp.com.br"+space(16)
   mPara:="fernando@volp.com.br"+space(23)
   mAssunto:="TESTE DE E-MAIL OFFICE 365"
   mSmtp:="smtp.volp.com.br"+space(34)
   mPop:="pop.volp.com.br"+space(35)
   mSenha:="senha"+space(40)
   mAutentica:="sistema@volp.com.br"+space(31)
   mPorta:=587
   mSSL:="N"
   
   lTestarSSl:=.F.

   ******************
   ** Não Funciona **
   ******************
   if lTestarSSl
      mDe:="volpindustria01@gmail.com"+space(16)
      mPara:="fernando@volp.com.br"+space(23)
      mAssunto:="TESTE DE E-MAIL OFFICE 365"
      mSmtp:="smtp.gmail.com"+space(34)
      mPop:="pop.gmail.com"+space(35)
      mSenha:="senha"+space(40)
      mAutentica:="volpindustria01@gmail.com"+space(31)
      mPorta:=587
      mSSL:="S"
   endif
   
   do while .T.      
      @ 02,12 say "De     :" get mDe
      @ 03,12 say "Para   :" get mPara
      @ 04,12 say "Assunto:" get mAssunto
      
      @ 06,12 say "SMTP   :" get mSmtp
      @ 07,12 say "POP    :" get mPop
      @ 08,12 say "Usuario:" get mAutentica
      @ 09,12 say "Senha  :" get mSenha
      @ 10,12 say "Porta  :" get mPorta
      @ 11,12 say "SSL    :" get mSSl valid mSSl$"SN"
      @ 11,25 say "S=.T.       N=.F."
      
      @ 24,0 say "Digite os dados ou ESC para sair"+space(40)
      read
      
      if lastkey()==27 //ESC
         exit
      endif
      
      @ 24,0 say "Enviado e-mail para "+mPara
      
/*
      IF ! tip_SSL()
         alert( 'Require SSL support' )
         RETURN .F.
      ENDIF
*/
      
      if HB_SENDMAIL(allTrim(mSmtp),mPorta,allTrim(mDe),{mPara},,,"TESTE CORPO DO E-MAIL",allTrim(mAssunto),,alltrim(mAutentica),allTrim(mSenha),allTrim(mPop),,.F.,.T.,.T.,,,,if(mSSl=="S",.T.,.F.))
         alert("Email enviado para "+allTrim(mPara))
      else
         alert("FALHA AO ENVIAR E-MAIL PARA "+allTrim(mPara))
      endif
      
      loop
   enddo

   RETURN NIL


CINI = 
C_OUTPUTFOLDER =
DEFFILE =
INCLUDEFOLDERS =
LAUTORUN =
LDEBUG = .F.
LGUI = .F.
LIBFOLDERS =
LMT = .F.
LNOAUTOFWH = .F.
LPRG_CLASSICDEBUG = .F.
LPRG_DEBUG = .F.
LUSEDLL = .F.
MAPFILE =
MYC_FLAGS =
MYDEFINES =
MYLINK_FLAGS =
MYPRG_FLAGS =
MYRC_FLAGS =
MYSLY_FLAGS =
OUTPUTFOLDER =
PRG_OUTPUTFOLDER =
RC_OUTPUTFOLDER =
RUNARGUMENTS =
SLY_OUTPUTFOLDER =
STARTIN =
TARGETFOLDER =

[email.prg]
MYC_FLAGS =
MYDEFINES =
MYPRG_FLAGS =

[C:\xHB\Lib\TipSSL.lib]
[C:\xHB\Lib\ssleay32.lib]
[C:\xHB\Lib\libeay32.lib]
[C:\xHB\OpenSSL-Win32\lib\libssl.lib]
[C:\xHB\OpenSSL-Win32\lib\openssl.lib]
fernando_volp
Usuário Nível 1

Usuário Nível 1
 
Mensagens: 3
Data de registro: 10 Nov 2020 15:47
Cidade/Estado: São Paulo/SP
Curtiu: 0 vez
Mens.Curtidas: 0 vez

hb_sendmail() com SSL em xHarbour 1.2.3

Mensagempor sygecom » 13 Nov 2020 09:48

Fernando,

O office365 usa o protocolo TLS em vez de SSL e, desconfio que o xharbour não de conta dessa opção, eu vi que o Harbour.

Particularmente aqui estou usando já faz alguns anos uma DLL que desenvolvemos em Lazarus, se quiser posso compartilhar a DLL e os fontes aqui para você, ou procure alguma solução em Harbour.
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
leonardodemachado@hotmail.com

Faça você também sua doação esse fórum é uma lenda viva: http://www.pctoledo.com.br/doacao
Avatar de usuário

sygecom
Usuário Nível 7

Usuário Nível 7
 
Mensagens: 7020
Data de registro: 21 Jul 2006 10:12
Cidade/Estado: Alvorada-RS
Curtiu: 1 vez
Mens.Curtidas: 133 vezes

hb_sendmail() com SSL em xHarbour 1.2.3

Mensagempor fernando_volp » 13 Nov 2020 15:37

Leonardo,

Obrigado pela resposta, se puder compartilhar a dll e o fonte comigo ficarei muito grato.
Confesso que já estou a mais de 1 semana na peleja para resolver esse problema.
fernando_volp
Usuário Nível 1

Usuário Nível 1
 
Mensagens: 3
Data de registro: 10 Nov 2020 15:47
Cidade/Estado: São Paulo/SP
Curtiu: 0 vez
Mens.Curtidas: 0 vez

hb_sendmail() com SSL em xHarbour 1.2.3

Mensagempor sygecom » 14 Nov 2020 16:59

Fernando,
Segue em anexo: DLL, FONTES DA DLL(.PAS), EXEMPLO EM XHARBOUR(.PRG)

Estou usando a versão 1.6.4 do Lazarus para compilar a DLL.
versao_lazarus.png
Anexos
email_delphi.rar
(1.37 MiB) Baixado 183 vezes
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
leonardodemachado@hotmail.com

Faça você também sua doação esse fórum é uma lenda viva: http://www.pctoledo.com.br/doacao
Avatar de usuário

sygecom
Usuário Nível 7

Usuário Nível 7
 
Mensagens: 7020
Data de registro: 21 Jul 2006 10:12
Cidade/Estado: Alvorada-RS
Curtiu: 1 vez
Mens.Curtidas: 133 vezes

hb_sendmail() com SSL em xHarbour 1.2.3

Mensagempor fernando_volp » 16 Nov 2020 23:05

Leonardo, boa noite!

Obrigado por compartilhar o fonte.
Compilei e o programa executam, mas em o ALERT('enviado com sucesso'), em coloquei uma informação errada para testar o if ! e o programa exibiu o ALERT('Erro ao conectar ao email, favor revisar').

Estou achando que o problema é em algumas das minhas libs.

No XBP você link como as:

[lib\tipssl.lib]
[lib\ssleay32.lib]
[lib\libeay32.lib]
[lib\tip.lib]
[lib\codepage.lib]

Você teria elas para me passar? Fiz um teste de baixar no xharbour.org mas com as de lá dá erro de compilação (lib corrompida).

Obrigado mais um vez.
fernando_volp
Usuário Nível 1

Usuário Nível 1
 
Mensagens: 3
Data de registro: 10 Nov 2020 15:47
Cidade/Estado: São Paulo/SP
Curtiu: 0 vez
Mens.Curtidas: 0 vez

hb_sendmail() com SSL em xHarbour 1.2.3

Mensagempor Kapiaba » 02 Dez 2020 15:44

Leonardo, qual é a configurações para enviar email via app direto da minha conta de email da microsoft?

Sender(remetente):

Server(servidor):

User :

Password: xxxxxxxxxx

Port: 587

SSL yes or no ?

Obg. abs.
Kapiaba
Colaborador

Colaborador
 
Mensagens: 1766
Data de registro: 07 Dez 2012 15:14
Cidade/Estado: São Paulo
Curtiu: 311 vezes
Mens.Curtidas: 119 vezes

hb_sendmail() com SSL em xHarbour 1.2.3

Mensagempor Kapiaba » 02 Dez 2020 15:58

Leonardo quando eu tenho um email da microsoft(Outlook) como configuro, igual este teu exemplo?

FUNCTION Email_Office365()

   LOCAL nPORTSMTP:=587
   LOCAL cServerIP:='smtp.gmail.com'
   LOCAL cUSER:='seuemail@gmail.com'
   LOCAL cFROM:='seuemail@gmail.com'
   LOCAL cPASS:='sua_senha'
   LOCAL cMSG:='Descricao da mensagem', cASUNTO:='Descrição do assunto'
   LOCAL cBCC:='email_destino_copia_oculta@dominio.com.br'
   LOCAL cCC:='email_destino_copia@dominio.com.br'
   LOCAL cQUEM:='destino@nomedominio.com.br'

   LOCAL lSSL_EMAIL:=.T.  //.F.=NÃO USA SSL(ANTIGA PORTA 25) e .T.=USA SSL
   LOCAL lTLS_EMAIL:=.T.  //.F.=NÃO USA TLS e .T.=USA TSL( EX: OFICCE365 )
   LOCAL lEMAIL_CONF:=.F. // .F.=NÃO ENVIA CONFIRMAÇÃO DE LEITURA e .T.=ENVIA CONFIRMAÇÃO DE LEITURA
   LOCAL lHTML:=.T.       // .F.=MODO TEXTO e .T.=MODO

RETURN NIL


gmail.com, não tenho problemas de envio com xHarbour... Agora com conta microsoft....

Obg. abs.
Kapiaba
Colaborador

Colaborador
 
Mensagens: 1766
Data de registro: 07 Dez 2012 15:14
Cidade/Estado: São Paulo
Curtiu: 311 vezes
Mens.Curtidas: 119 vezes

hb_sendmail() com SSL em xHarbour 1.2.3

Mensagempor Kapiaba » 03 Dez 2020 13:15

FiveWin, é o bicho... kkkkk, aparentemente, o outlook.com está dominado.

https://i.imgur.com/77PKeoJ.png

Imagem

Obg. abs.
Kapiaba
Colaborador

Colaborador
 
Mensagens: 1766
Data de registro: 07 Dez 2012 15:14
Cidade/Estado: São Paulo
Curtiu: 311 vezes
Mens.Curtidas: 119 vezes

hb_sendmail() com SSL em xHarbour 1.2.3

Mensagempor Kapiaba » 03 Dez 2020 17:52

Funciona bem, mas o outlook.live.com, tem limitação de envio de mensagens. O meu é o grátis. Acho que o pago, deve ser ilimitado... Sei lá...

outlook365.png


Amanhã, continuo os testes, quando eles liberarem o envio novamente.

Abs.
Kapiaba
Colaborador

Colaborador
 
Mensagens: 1766
Data de registro: 07 Dez 2012 15:14
Cidade/Estado: São Paulo
Curtiu: 311 vezes
Mens.Curtidas: 119 vezes

hb_sendmail() com SSL em xHarbour 1.2.3

Mensagempor jairfab » 03 Dez 2020 18:57

Joao disponibiliza o código aqui pra gente testar também!
Delpji 7, harbour 3.2, xharbour 1.2.3, Bcc7, Minigw, Minigui 19.11, hwgui 2.20, FiveWin 19.05 Gtwvw, Gtwvg, C# VS 2017
Avatar de usuário

jairfab
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 243
Data de registro: 21 Mai 2007 09:43
Cidade/Estado: São Paulo, Região Leste - Suzano
Curtiu: 0 vez
Mens.Curtidas: 13 vezes

hb_sendmail() com SSL em xHarbour 1.2.3

Mensagempor Itamar M. Lins Jr. » 03 Dez 2020 19:15

Olá!
Uso o Harbour com isso ai, SSL, TLS, faz tempo só o Harbour.(2009)
Fivewin não tem isso, nem nenhuma lib gráfica do Harbour, todos usam o que tem no contrib do Harbour.
Alias o Harbour 3.4 do Viktor que corrigiu muita coisa que estava bugada, depois desistiu e passou a usar CURL LIB, que é usada em praticamente todas as linguagens de programação Open Source.

/* Copyright 2009 Viktor Szakats (vsz.me/hb) */

#require "hbssl"
#require "hbtip"

#if ! defined( __HBSCRIPT__HBSHELL )
REQUEST __HBEXTERN__HBSSL__
#endif

#include "simpleio.ch"

PROCEDURE Main( cFrom, cPassword, cTo, cHost )

   LOCAL nPort
   LOCAL lSTARTTLS := .F.

   IF ! tip_SSL()
      ? "Error: Requires SSL support"
      RETURN
   ENDIF

   hb_default( @cFrom    , "<from@example.net>" )
   hb_default( @cPassword, "password" )
   hb_default( @cTo      , "to@example.org" )
   hb_default( @cHost    , "localhost" )

   cHost := Lower( cHost )

   /* SMTPS works with SSL/TLS on port 465 and with STARTTLS
      on port 587. STARTTLS mode is fully automatic and requires
      SSL/TLS be disabled at first (it will be activated on
      request after STARTTLS command) */

   DO CASE
   CASE cHost == "apple" .OR. "@icloud.com" $ cFrom .OR. "@mac.com" $ cFrom .OR. "@me.com" $ cFrom
      cHost := "smtp.mail.me.com"; lSTARTTLS := .T.
   CASE cHost == "fastmail" .OR. "@fastmail.com" $ cFrom .OR. "@fastmail.fm" $ cFrom
      cHost := "smtp.fastmail.com"
   CASE cHost == "gmx.net" .OR. "@gmx.net" $ cFrom .OR. "@gmx.ch" $ cFrom .OR. "@gmx.de" $ cFrom
      cHost := "mail.gmx.net"
   CASE cHost == "google" .OR. "@gmail.com" $ cFrom .OR. "@googlemail.com" $ cFrom
      cHost := "smtp.gmail.com"
   CASE cHost == "mail.ru" .OR. "@mail.ru" $ cFrom
      cHost := "smtp.mail.ru"
   CASE cHost == "netease" .OR. "@163.com" $ cFrom
      cHost := "smtp.163.com"
   CASE cHost == "office365"
      cHost := "smtp.office365.com"; lSTARTTLS := .T.
   CASE cHost == "outlook" .OR. "@outlook.com" $ cFrom .OR. "@hotmail.com" $ cFrom
      cHost := "smtp-mail.outlook.com"; lSTARTTLS := .T.
   CASE cHost == "sina" .OR. "@sina.com" $ cFrom
      cHost := "smtp.vip.sina.com"
   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
      IF TUrl():New( cHost ):nPort != -1
         nPort := TUrl():New( cHost ):nPort
      ENDIF
      lSTARTTLS := ( nPort == 587 )
      cHost := TUrl():New( cHost ):cServer
   ENDCASE

   hb_default( @nPort, iif( lSTARTTLS, 587, 465 ) )

   ? "Host:", cHost, hb_ntos( nPort ), iif( lSTARTTLS, "(STARTTLS)", "" )

   ? tip_MailSend( ;
      cHost, ;
      nPort, ;
      cFrom, ;
      cTo, ;
      /* CC */, ;
      {} /* BCC */, ;
      "test: body", ;
      "test: subject", ;
      { __FILE__ } /* attachment */, ;
      cFrom, ;
      cPassword, ;
      "", ;
      /* nPriority */, ;
      /* lRead */, ;
      .T. /* lTrace */, ;
      .F., ;
      /* lNoAuth */, ;
      /* nTimeOut */, ;
      /* cReplyTo */, ;
      nPort == 465 )

   RETURN

Detalhe, até pelo hbrun funciona. Harbour 3.4

Saudações,
Itamar M. Lins Jr.
Avatar de usuário

Itamar M. Lins Jr.
Colaborador

Colaborador
 
Mensagens: 6959
Data de registro: 30 Mai 2007 11:31
Cidade/Estado: Ilheus Bahia
Curtiu: 312 vezes
Mens.Curtidas: 508 vezes

hb_sendmail() com SSL em xHarbour 1.2.3

Mensagempor Kapiaba » 04 Dez 2020 00:27

Boa noite Jair, assim que eu finalizar a lógica, disponibilizarei todo o material gratuitamente para toda comunidade. Como estou fazendo em @SAY do FiveWin, e não sou lá grande coisa em @SAY, pois sou viciado em RECURSOS, vai demorar um pouquinho, pois é um pé no s... acertar coordenadas usando código em FiveWin. Já está 80% operacional. Aguarde e confie que eu não nego nada aos FiveWinners do Brasil. Forte abraço. I Love FiveWin. Obg. abs.

Jair, acredite se quiser, eu estou aprendendo a programar em @SAY... kkkkkkkkk, koisa horrorosa... kkkkkkk
Kapiaba
Colaborador

Colaborador
 
Mensagens: 1766
Data de registro: 07 Dez 2012 15:14
Cidade/Estado: São Paulo
Curtiu: 311 vezes
Mens.Curtidas: 119 vezes

hb_sendmail() com SSL em xHarbour 1.2.3

Mensagempor Kapiaba » 04 Dez 2020 14:23

Pronto Jair, baixe e teste, se modificar, por favor post as mudanças, ou me envie no skype. Many thanks.

Download:

https://mega.nz/file/ZY0lCC4b#J087eB2aPhfZiNynwgaEnkwvrPF2P6y7Pifxl_41Qco

Obg. abs.
Kapiaba
Colaborador

Colaborador
 
Mensagens: 1766
Data de registro: 07 Dez 2012 15:14
Cidade/Estado: São Paulo
Curtiu: 311 vezes
Mens.Curtidas: 119 vezes




Retornar para Harbour

Quem está online

Usuários vendo este fórum: Nenhum usuário registrado online e 12 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