Olá,
Você não vai achar nada exclusivo para FW, basta ver os exemplos em C/C++ que será muito próximo do FW as funções da API, só que na postagem vc falou de classe e não de funções da API do Windows.
e-mail: gilmer@fivewin.com.br
msn: fivewinbrasil@hotmail.com
Ontem fazendo testes com Harbour tive total sucesso com envio e recebimento de e-mail com uso de SSL, sendo que este é o maior problema para envios de e-mails, porem, para que usa xharbour, existe uma DLL paga que resolve totalmente estes problemas, poderia ser uma solução, até verificar com o xharbour o tratamento de SSL, se não tiver esta "fácil" de implementar
Falta tempo! kkkkkkkk
Abaixo como usar a DLL da http://www.marshallsoft.com/
/*
OBS: #DEFINE SEE_KEY_CODE (Obter esse registro junto ao fornecedor DLL)
Site para aquisição : http://www.marshallsoft.com/
Quando trial, ao vencer é necessário baixar novamnete as DLL's e colocar na pasta de origem, neste caso definido em " DIRLOCAL "
*/
#include "Fivewin.ch"
// envio de email DLL SEE32
#DEFINE SEE_LOG_FILE 20
#DEFINE SEE_SMTP_PORT 15
#DEFINE SEE_ENABLE_ESMTP 29
#DEFINE SEE_SET_SECRET 57
#DEFINE SEE_SET_USER 58
#DEFINE SEE_QUOTED_PRINTABLE 8
#DEFINE QUOTED_OFF 0
#DEFINE QUOTED_PLAIN 1
#DEFINE QUOTED_HTML 2
#DEFINE SEE_KEY_CODE 999999 // Key de REGISTO pra envio do email
#DEFINE DIRLOCAL "C:\EMAIL"
//-------------------------------------------------------------------------------------------------//
Function main()
Local cEmailTO,cEmailSEND,cSenhaEmail,cAssunto,cSmtp,nPortaSmtp,cMensagemEmail,cArquivoEnvio
Public hDLLmail
?'compilou'
cEmailSEND := "xml@hotmail.com.br"
cSenhaEmail := "********"
cSmtp := "smtp.live.com"
nPortaSmtp := 567
cAssunto := "Teste de Email"
cEmailTO := "email@destinatario.com.br"
cMensagemEmail := "Ola,"+CRLF+"Tudo bem com você."
// Se não conter anexo, enviar( cArquivoEnvio = "" )
cArquivoEnvio := DIRLOCAL+"\teste.txt"
If EnvioEmail(cEmailTO,cEmailSEND,cSenhaEmail,cSmtp,nPortaSmtp,cAssunto,cMensagemEmail,cArquivoEnvio)
MsgInfo("Email Enviado com sucesso!")
Endif
Return Nil
//----------------------------------------//
// Envio de Arquivo por email
Function EnvioEmail(cEmailTO,cEmailSEND,cSenhaEmail,cSmtp,nPortaSmtp,cAssunto,cMensagemEmail,cArquivoEnvio)
Local N,Code,KeyCode,FileName
LOCAL gLocalDir //'local directory'
LOCAL gLogFile //'log file'
LOCAL gSmtpUser //'SMTP user'
LOCAL gSmtpPass //'SMTP password'
LOCAL gSmtpHost //'SMTP server '
LOCAL gLogPathName //'log file name '
LOCAL gEmailDir //'email Directory '
LOCAL gAttachDir //'attachmenst diretory'
LOCAL gSmtpPort //'SMTP server port - normally 465 or 25.'
LOCAL gProxyPort //'proxy port (to contact proxy on)'
LOCAL gProxyDir //'proxy server directory'
LOCAL gProxyExe //'proxy server executable'
LOCAL gProxyCert //'proxy server certificate (PEM format)'
LOCAL gEmailTo //'recipient '
LOCAL gEmailFrom //'sender'
LOCAL gEmailSubj //'subject'
LOCAL gEmailMsg //'message'
LOCAL gEmailAttach //'attachment filenames'
LOCAL Buffer,FileSet,AttachStr
LOCAL oSmtp,aPorta,h3
Default cAssunto := "Sem Assunto",cMensagemEmail :=""
cEmailTO :=Alltrim(cEmailTO)
cEmailSEND :=Alltrim(cEmailSEND)
cSenhaEmail:=Alltrim(cSenhaEmail)
cSmtp :=Alltrim(cSmtp)
if Empty(cEmailSEND);Msginfo('Email de envio não definido',"Atenção");Return .F.;Endif
if Empty(cSenhaEmail);Msginfo('Senha de email não definido',"Atenção");Return .F.;Endif
if Empty(cSmtp);Msginfo('Falha ao carregar SMTP de email',"Atenção");Return .F.;Endif
if Empty(nPortaSmtp);Msginfo('Porta SMTP de email não definido',"Atenção");Return .F.;Endif
// Carrega a DLL na memória
if !File(DIRLOCAL+'\SEE32.DLL')
MsgInfo("SEE32.DLL não encontrada na pasta de origem, Verifique","Atenção")
Return .F.
Endif
?m->hDLLmail:=loadLibrary(DIRLOCAL+'\SEE32.DLL')
// Variaveis de Envio
*** BEG-PROGRAMMER: Edit the following lines ***
gLocalDir := DIRLOCAL //' local directory (ends with \)
gProxyPort := 8801 //' proxy port (to contact proxy on)
gProxyDir := DIRLOCAL+"\SSL\" //' proxy server directory
gProxyExe := DIRLOCAL+"\SSL\stunnel.exe" //' proxy server executable
gProxyCert := DIRLOCAL+"\SSL\stunnel.pem" //' proxy server certificate (PEM format)
gSmtpPort := nPortaSmtp // ' SMTP server port - normally 25 or 587.
gEmailSubj := cAssunto // ' email subject
gEmailMsg := cMensagemEmail // Corpo do Email
gSmtpHost := cSmtp // ' SMTP server name Exemplo SMTP.GMAIL.COM.BR
gSmtpUser := cEmailSEND // Email origem de envio
gSmtpPass := cSenhaEmail // Senha
gEmailFrom := "<"+cEmailSEND+">" // Email Envio
gEmailTo := "<"+cEmailTO+">" // ' Email Destinatario
// declarações DLL Emial para 32 Bytis
Dll32 Function seeAttach(NbrChans As LONG, KeyCode As LONG) AS LONG PASCAL LIB m->hDllmail
Dll32 Function seeClose( Chan As LONG) AS LONG PASCAL LIB m->hDllMail
Dll32 Function seeErrorText( Chan As LONG, Code As LONG, Buffer As STRING, BufLen As LONG) AS LONG PASCAL LIB m->hDllmail
Dll32 Function seeIntegerParam(Chan As _INT, Index As _INT, Value As _INT) AS LONG PASCAL LIB m->hDllmail
Dll32 Function seeRelease() AS LONG PASCAL LIB m->hDllmail
Dll32 Function seeSendEmail( Chan As LONG, Rcpt As STRING, CC As STRING,;
BCC As STRING, Subj As STRING, Msg As STRING, Attach As STRING) AS LONG PASCAL LIB m->hDllmail
Dll32 Function seeSetProxySSL(ProxyCode As LONG,ProxyFlags As LONG,ProxyDir As STRING, ProxyCert As STRING,ProxyExe As STRING) AS LONG PASCAL LIB m->hDllmail
Dll32 Function seeSmtpConnectSSL(Chan As LONG,ProxyPort As LONG,SmtpPort As LONG,SmtpServer As STRING,User As STRING,Pass As STRING, From As STRING,Reply As STRING,ProxyIP As STRING) AS LONG PASCAL LIB m->hDllmail
Dll32 Function seeSmtpConnect( Chan As LONG, Server As STRING, From As STRING, Reply As STRING) AS LONG PASCAL LIB m->hDllmail
Dll32 Function seeSTRINGParam( Chan As LONG, Index As LONG, Value As STRING) AS LONG PASCAL LIB m->hDllmail
Dll32 Function seeTestFileSet(Chan As LONG, FileSet As STRING, Buffer As STRING, BufLen As LONG) AS LONG PASCAL LIB m->hDllmail
Dll32 Function seeGetEmailFile(Chan As LONG, MsgNbr As LONG, Filename As STRING, EmailDir As STRING, AttachDir As STRING) AS LONG PASCAL LIB m->hDllmail
Eu fiz uma declaração a muitos anos para o Eduardo, quem sabe ele tenha ainda.
Depois que falar com ele, posto o resultado.
Porem, a declaração e bem simples de ser feito
oCteUtil := GetActiveObject( "CTe_Util_2G.Util" )
// retornando a versão
? oCteUti:Versao()
Bom Dia,
Tinha link inserido que propagava o vírus, já removemos e enviamos e-mail para o google, estamos aguardando uma resposta deles que poderia levar 72 horas