Exemplo:
Tem que linkar com as libs do Viktor
https://bintray.com/vszakats/generic/opensslA última versão do OpenSSL é 1.1.1A
AzulHTML := '<span style="color:#0000FF">'
VermelhoHTML := '<span style="color:#FF0000">'
aArquivos := {}
WITH Object ClEmailSSL():New()
:cUser := "harbour"
:cPassword := "harbour"
:cFrom := "harbour@gmail.com"
:cAlias := "Sistema Demo <" + :cFrom + "> "
:aTo := {"Harbour <Harbour@gmail.com>"}
:cHost := "smtp.gmail.com"
:cAssunto := "Log de sistema em: " + Hb_DtoC( Date(), "DD/MM/YYYY" ) + " " + Time()
:cMensagem := AzulHTML + "Log de confirmação de atualização de arquivo(s) : " + ;
Hb_Eol() + ;
Hb_Eol()+ ;
"" + ;
Hb_Eol() + ;
"Em: " + Hb_DtoC(Date(), "DD/MM/YYYY") + " " + Time() + ;
Hb_Eol() + ;
"Estação: " + Hb_GetEnv( "computername" ) + ;
Hb_Eol()+ ;
VermelhoHTML + "Teste envio de eMail com OpenSSL" + ;
Hb_Eol() + ;
Hb_Compiler() + ;
Hb_Eol()+ ;
"HBSSL Version loaded: " + OpenSSL_Version()
:aArquivo := aArquivo //arquivo anexado
:lRead := .T.
:nPriority := 1
:cUrlImagem := 'https://lh3.googleusercontent.com/287NbWC1cbSgR5CL6fcAVNMLgXHQGN9tIiFJvHYNhQfJ5XExT4DfDAdQHwgLinyWJayMwDgyolusCuw3w4hFP2H4qqmWMIVAhuqin5VRkylkbi-loiA8IP_Mt2Aj4CtauMYfMhvt7TivZfzkzMCsSh2Em2oXYxt9cX5c5YID-yQDASMOwj1fJV2eakF0njIo8eU4lKC01K1XT3BHm0V3ZuZQ8U4BlWqwmCutRirk3Dw1-O0D2rBqJo4gJokyZAECP3UCkQV4X0QaM8ip7LUgTe70rbQ8yLNrZ3GujkcTJxEypsUT6oRLE5PDy8tvmp162KUEOrCyllGisJGZjvVJ7BWEm7tGP8gIkJtgj_A-35VQLs-XjqfMw-8pxqKPzTj_xK3f4ELHCbXQ20ppj8PHKHB11-FQ_aeRzJ4SQ1dWs-ymM0K1yRVC_Bbuva02yXg4PNKK0V7TqE0MgKsRbhpqtZ7gKPSYNgJ80974iumqFdvwqQfB1SGQmoILEQ0-2hzl94ERCdwu-OORSxmpwUB3WOd6ZfIGZrxanTfBSL_x2bPSfgE-1uS7kBHNTNmgPigZzadUwn7iMgo3SwG80YsT94hHp26CtjebhP6wAf6DhPDr3uTPnetpIcXmQlFT0AA=s128-no'
:nPorta := 465
:lSSL :=( :nPorta == 465 )
:Send()
IF :lRet
MsgInfo("Email Enviado")
ENDIF
END
#include "simpleio.ch"
#include "fileio.ch"
#include "hbclass.ch"
#include "hbthread.ch"
#define HB_SYMBOL_UNUSED( symbol ) ( symbol := ( symbol ) )
*-----------------------------------------------------------------------------------------------------------------------------*
* Classe : ClEmailSSL
* Projeto:
* Autor : Alexandre Simões
* Criação: 12/05/2016
*-----------------------------------------------------------------------------------------------------------------------------*
#if ! defined( __HBSCRIPT__HBSHELL )
REQUEST __HBEXTERN__HBSSL__
#endif
MEMVAR lRetorno
CREATE CLASS ClEmailSSL
PROTECTED :
DATA cAssunto
DATA cMensagem
DATA cFonte
DATA cImagem
DATA lInformativo
DATA cUser
DATA cPassword
DATA cAlias
DATA cFrom
DATA aTo
DATA aCC
DATA aBCC
DATA cHost
DATA nPriority
DATA lRead
DATA nPorta
DATA lSSL
DATA nTimeOut
DATA cUrlImagem
DATA cImagem
DATA cBodyTemp
DATA lRet
EXPORTED :
VAR aArquivo AS Array INIT {}
VAR cAssunto AS String INIT ""
VAR cMensagem AS String INIT ""
VAR cImagem AS String INIT ""
VAR lInformativo AS Logical INIT .F.
VAR cUser AS String INIT ""
VAR cPassword AS String INIT ""
VAR cAlias AS String INIT ""
VAR cFrom AS String INIT ""
VAR aTo AS Array INIT {}
VAR aCC AS Array INIT {}
VAR aBCC AS Array INIT {}
VAR cHost AS String INIT ""
VAR nPriority AS Integer INIT 3
VAR lRead AS Logical INIT .F.
VAR nPorta AS Integer INIT 465
VAR lSSL AS Logical INIT .F.
VAR nTimeOut AS Integer INIT 2000
VAR cUrlImagem AS String INIT ""
VAR cImagem AS String INIT ""
VAR cBodyTemp AS String INIT ""
VAR lRet AS Logical INIT .F.
METHOD Send()
METHOD SendEmailSSL( cHost, ;
nPorta, ;
cAlias, ;
aTo, ;
aCC, ;
aBcc, ;
cBodyTemp, ;
cAssunto, ;
aArquivo, ;
cUser, ;
cPassword, ;
nPriority, ;
lRead, ;
nTimeOut, ;
lSSL )
METHOD PNGAsa( cImagem )
METHOD HtmlEncodeJPEG( cFileContent )
ENDCLASS
METHOD Send()
LOCAL bImagem, nWidth, nHeight, cTagIni, cTagFim
IF ! tip_SSL()
RETURN Nil
ENDIF
cTagIni := [<pre>]
cTagFim := [</pre>]
IF ! Empty( ::cUrlImagem ) .AND. Empty( ::cImagem )
::cImagem := [<p><IMG SRC=] + '"' + ::cUrlImagem + '"' + [></p>]
ENDIF
::cFonte := '<font color="#0000FF" face="lucida console" size="3">'
IF ! Empty( ::cImagem ) .AND. Empty( ::cUrlImagem )
Fi_Initialise()
bImagem := Fi_Load( FIF_PNG, ::cImagem, PNG_DEFAULT )
nWidth := Fi_GetWidth( bImagem )
nHeight := Fi_GetHeight( bImagem )
//::cImagem := [<p><IMG SRC=] + ::HtmlEncodeJPEG( ::PNGAsa() ) + [ width = Hb_Ntos( nWidth ) height = Hb_Ntos( nHeight )></p>]
::cImagem := [<p><IMG SRC=] + ::HtmlEncodeJPEG( Hb_MemoRead( ::cImagem ) ) + [ width = Hb_Ntos( nWidth ) height = Hb_Ntos( nHeight )></p>]
Fi_Deinitialise()
ENDIF
::cMensagem := cTagIni + ::cImagem + ::cFonte + ::cMensagem + cTagFim
::cBodyTemp := Hb_GetEnv( "temp" ) + Hb_Ps() + "BODY.HTM"
nFileHandle := fCreate( ::cBodyTemp )
fWrite( nFileHandle, ::cMensagem )
fClose( nFileHandle )
lRetorno := .F.
::lRet := ::SendEmailSSL( ::cHost,;
::nPorta,;
::cAlias,;
::aTo,;
::aCC,;
::aBcc,;
::cBodyTemp,;
::cAssunto,;
::aArquivo,;
::cUser,;
::cPassword,;
::nPriority,;
::lRead,;
::nTimeOut,;
::lSSL )
::lRet := lRetorno
RETURN ::lRet
//#pragma -km+
METHOD PNGAsa( cImagem ) CLASS ClEmailSSL
//#pragma __binarystreaminclude "..\avi\update.png" | RETURN %s
METHOD HtmlEncodeJPEG( cFileContent )
LOCAL cTxt, oEncoder := TipEncoderBase64():New()
cTxt := ["] + "data:" + Hb_mimeFName( "update.png", "ptprapqp", "ptprapqp" ) + "; base64," + oEncoder:Encode( cFileContent ) + ["]
RETURN cTxt
METHOD SendEmailSSL( cHost, ;
nPorta, ;
cAlias, ;
aTo, ;
aCC, ;
aBcc, ;
cBodyTemp, ;
cAssunto, ;
aArquivo, ;
cUser, ;
cPassword, ;
nPriority, ;
lRead, ;
nTimeOut, ;
lSSL )
lRetorno := tip_MailSend( cHost, ;
nPorta, ;
cAlias, ;
aTo, ;
aCC, ;
aBcc, ;
cBodyTemp, ;
cAssunto, ;
aArquivo, ;
cUser, ;
cPassword, ;
"", ;
nPriority, ;
lRead, ;
.F., ;
.F., ;
nTimeOut, ;
NIL, ;
.T., ;
lSSL, ;
NIL, ;
NIL, ;
NIL )
RETURN lRetorno