Página 1 de 2

Enviar email anexando um executável

Enviado: 27 Abr 2020 07:55
por asimoes
O GMAIL não permite anexar esses tipos de arquivos:

.ade, .adp, .apk, .appx, .appxbundle, .bat, .cab, .chm, .cmd, .com, .cpl, .dll, .dmg, .exe, .hta, .ins, .isp, .iso, .jar, .js, .jse, .lib, .lnk, .mde, .msc, .msi, .msix, .msixbundle, .msp, .mst, .nsh, .pif, .ps1, .scr, .sct, .shb, .sys, .vb, .vbe, .vbs, .vxd, .wsc, .wsf, .wsh

Mas tem como "enganar" o gmail usando TipEncoderBase64()


oEncoder := TipEncoderBase64():New()

Hb_MemoWrit( "ASAPREV.TXT", oEncoder:Encode( Hb_MemoRead( [ASAPREV.EXE] ) ) ) //para encondar

Hb_MemoWrit( "ASA.EXE", oEncoder:Decode( Hb_MemoRead( [ASAPREV.TXT] ) ) ) //desencodar

O arquivo asaprev.txt pode ser anexando ao email, quando o arquivo for baixando ele pode ser desencodado usando o método Decode.

Um teste usando de recepção de email desanexando o arquivo encodado
Vai precisar da OPENSSL a última versão é 1.1.1G baixar a versão 32bits

Baixar aqui: https://bintray.com/vszakats/generic/openssl

Depois que baixar, copiar as DLL´s que ficam na raiz: libcrypto-1_1.dll e libssl-1_1.dll para a pasta onde for testar a recepção do email

Código: Selecionar todos

#if ! defined( __HBSCRIPT__HBSHELL )
   REQUEST __HBEXTERN__HBSSL__
#endif

   IF ! tip_SSL()
      RETURN Nil
   ENDIF
   
   cUser     := StrTran( "xhbsistemas", "@", "&at;" )
   
   cPassword := "1234567"
   
   oUrl1 := tUrl():New( "pops://" + cUser + ":" + cPassword + "@pop.gmail.com" )
      
   oUrl1:cUserid := Strtran( cUser, "&at;", "@" )

   oClient := TIPClientPOP():New( oUrl1, .F. )
 
   IF ! oClient:Open()
      ? "Connection error:", oClient:lastErrorMessage()
   ENDIF
   
   aMail = oClient:RetrieveAll( .T. ) //.t.  deleta os emails recuperados

   FOR i := 1 TO Len( aMail )

      cMsg := ""
   
      WHILE ( oAtt := aMail[ i ]:NextAttachment() ) != Nil

         IF ! EMPTY( oAtt:GetFileName() )

            cMsg += "Anexo: " + oAtt:GetFileName() + Hb_Eol()

            IF ! oAtt:DetachFile(); BREAK; ENDIF
            ENDIF

      ENDDO
   
   NEXT


Enviar email anexando um executável

Enviado: 27 Abr 2020 08:49
por Vlademiro
Obrigado pelas dicas.

Tenho uma dúvida: esse procedimento
já funciona no Harbour 3.2 ?

Valeu

Enviar email anexando um executável

Enviado: 27 Abr 2020 12:19
por JoséQuintas
Vlademiro escreveu:Tenho uma dúvida:
esse procedimento já funciona no Harbour 3.2 ?
Na prática não vai funcionar nem no Harbour 3.4, se o Harbour 3.4 não for gerado com as LIBs que precisa.

Enviar email anexando um executável

Enviado: 27 Abr 2020 17:29
por asimoes
JoséQuintas escreveu:Na prática não vai funcionar nem no Harbour 3.4, se o Harbour 3.4 não for gerado com as LIBs que precisa.
Não sou tão pessimista assim, eu tento:

Provavelmente não precisa compilar o harbour usando o pacote da OPENSSL no post acima, mas se precisar olhe o SET HB_WITH_OPENSSL

Apontar para a pasta onde baixou o OPENSSL

-L\openssl\1.1.1G\lib;

Se for gerar o habour usar

SET HB_WITH_OPENSSL=D:\OPENSSL\1.1.1G\include

O mais importante é ter as dll´s na pasta.

Para o GMAIL só por SSL

Isso serve para o Harbour 3.2

Enviar email anexando um executável

Enviado: 27 Abr 2020 19:43
por lwinter
Aproveitando que estamos falando de email. Alguem saberia me dizer se o harbour trabalha com criptografia SSL/TLS para email?

Enviar email anexando um executável

Enviado: 27 Abr 2020 19:54
por lwinter
Parabens asimoes, excelente dica.
Com o encode64 pode-se incluir campo em arquivo json e enviar audios, imagens, arquivos e etc... Basta fazer o encode64 e inclui-lo em um campo de string e empacotar no json.
Nao sabia que era possivel no harbour.

rgds,

Enviar email anexando um executável

Enviado: 27 Abr 2020 20:15
por JoséQuintas
asimoes escreveu:.ade, .adp, .apk, .appx, .appxbundle, .bat, .cab, .chm, .cmd, .com, .cpl, .dll, .dmg, .exe, .hta, .ins, .isp, .iso, .jar, .js, .jse, .lib, .lnk, .mde, .msc, .msi, .msix, .msixbundle, .msp, .mst, .nsh, .pif, .ps1, .scr, .sct, .shb, .sys, .vb, .vbe, .vbs, .vxd, .wsc, .wsf, .wsh
Mas tem como "enganar" o gmail usando TipEncoderBase64()
Mas pera aí....
por default os anexos já são convertidos pra base64 no email, então isso seria equivalente a converter duas vezes.
Se o problema é só a extensão, porque converter duas vezes com o base64?

Enviar email anexando um executável

Enviado: 27 Abr 2020 21:06
por lwinter
Jose, acredito que sim. Mas esta solucao é para contornar o envio de EXE para nao ser barrado pelo provedor. De qualquer forma qualquer arquivo que voce enviar vai ter que passar pelo encode do provedor, portanto tanto faz se mandamos um txt ou exe. Mas sim, do outro lado a solucao do asimoes tera que decodifcar para base normal.

Enviar email anexando um executável

Enviado: 27 Abr 2020 23:38
por lucimauro
Sobre trabalhar com TLS acredito que sim
Usando -> copiar as DLL´s que ficam na raiz: libcrypto-1_1.dll e libssl-1_1.dll para a pasta onde for testar a recepção do email

Enviar email anexando um executável

Enviado: 28 Abr 2020 05:15
por tonicm
E porque não enviar o ficheiro zipado?

Enviar email anexando um executável

Enviado: 28 Abr 2020 11:07
por asimoes
tonicm escreveu:E porque não enviar o ficheiro zipado?
GMAIL barra!

Agora pode encodar um zip que passa.

Enviar email anexando um executável

Enviado: 28 Abr 2020 16:36
por lwinter
ola lucimauro

Me desculpe a ignorancia mas voce poderia me dar um exemplo de como usar estas funcoes? O certificado esta fixo dentro desta lib ou posso criar novos certificados? Caso afirmativo, como?

Obriagdo!

rgds,

Enviar email anexando um executável

Enviado: 28 Abr 2020 19:31
por asimoes
Exemplo para codificar um exectável e enviar por email usando GMAIL

oEncoder := TipEncoderBase64():New()

Hb_MemoWrit( "TESTE.TXT", oEncoder:Encode( Hb_MemoRead( [TESTE.EXE] ) ) )

Ponto para enviar o executável pelo GMAIL como TESTE.TXT

Hb_MemoWrit( "TESTE.EXE", oEncoder:Decode( Hb_MemoRead( [TESTE.TXT] ) ) )

Aqui retorna o executável ao seu binário original TESTE.EXE

Enviar email anexando um executável

Enviado: 28 Abr 2020 19:34
por asimoes
lwinter escreveu:ola lucimauro

Me desculpe a ignorancia mas voce poderia me dar um exemplo de como usar estas funcoes? O certificado esta fixo dentro desta lib ou posso criar novos certificados? Caso afirmativo, como?

Obriagdo!

rgds,
Não precisa de certificação, basta ter as dll´s na pasta do executável e usar o exemplo que eu postei

Enviar email anexando um executável

Enviado: 28 Abr 2020 19:37
por asimoes
Pode até zipar depois que encodar se o txt ficar grande. e enviar como zip o gmail não vai reclamar