enviar e-mail pelo xharbour

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

Moderador: Moderadores

Avatar do usuário
rochinha
Administrador
Administrador
Mensagens: 4664
Registrado em: 18 Ago 2003 20:43
Localização: São Paulo - Brasil
Contato:

Re: enviar e-mail pelo xharbour

Mensagem por rochinha »

Amiguinho

Me passe o seu email que lhe envio o meu exemplo:

É o esquema que uso com cliente e neste caso uso meu proprio site para enviar newletters de atualizacoes para os mesmos.

Eles recebem o email mas as imagens estão posicionadas em meu site.

No caso do envio de newsletter de meu sistema eu deixo algumas imagens ja guardadas em meu site, envio o conteudo HTML para o clientes mas os link estão direcionados para meu site.

Esta técnica é velha e a maioria dos site como submarino, americanas, etc, usam, pelo menos quando abro o meu Eudora sem estar conectado, vejo meus emails mas o espeço das imagens fica vazio. Desta forma não lotamos a caixa de email do cliente com imagens, etc.

Caso voce não tenha um site pode criar uma conta no Geocities ou V10 para armazenar as imagens e se for usar um programa cliente de FTP use o SmartFTP.
OPS! LINK QUEBRADO? Veja ESTE TOPICO antes e caso não encontre ENVIE seu email com link do tópico para [url=mailto://fivolution@hotmail.com]fivolution@hotmail.com[/url]. Agradecido.

@braços : ? )

A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
caminformaticaSH
Usuário Nível 1
Usuário Nível 1
Mensagens: 6
Registrado em: 30 Mai 2008 15:49
Localização: Brasil

Re: enviar e-mail pelo xharbour

Mensagem por caminformaticaSH »

Meu e-mail é: caminformatica@ibest.com.br

Fico grato se me enviar o exemplo. Obrigado.
Avatar do usuário
rochinha
Administrador
Administrador
Mensagens: 4664
Registrado em: 18 Ago 2003 20:43
Localização: São Paulo - Brasil
Contato:

Re: enviar e-mail pelo xharbour

Mensagem por rochinha »

Amiguinho

Ao visualizar o email recebido, veja o codigo fonte do mesmo e vera que as imagens estão posicionadas em meu site.

Isto torna o envio de muitas mensagens mais rapidas pois não ha o download da imagem em primeiro momento tornando lento o recebimento do email.
OPS! LINK QUEBRADO? Veja ESTE TOPICO antes e caso não encontre ENVIE seu email com link do tópico para [url=mailto://fivolution@hotmail.com]fivolution@hotmail.com[/url]. Agradecido.

@braços : ? )

A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
carlos_dornelas
Usuário Nível 3
Usuário Nível 3
Mensagens: 400
Registrado em: 25 Ago 2004 21:54

Re: enviar e-mail pelo xharbour

Mensagem por carlos_dornelas »

Rochinha, podes me mandar esse exemplo também?

acdornelas@bol.com.br

Grato
caminformaticaSH
Usuário Nível 1
Usuário Nível 1
Mensagens: 6
Registrado em: 30 Mai 2008 15:49
Localização: Brasil

Re: enviar e-mail pelo xharbour

Mensagem por caminformaticaSH »

Rochinha, ainda não recebi o e-mail, você já mandou?
Avatar do usuário
rochinha
Administrador
Administrador
Mensagens: 4664
Registrado em: 18 Ago 2003 20:43
Localização: São Paulo - Brasil
Contato:

Re: enviar e-mail pelo xharbour

Mensagem por rochinha »

Amiguinho,

Enviei duas vezes, verifique se sua caixa não possue algum travador de spam ou me indique algum email IG ou HOTMAIL, beleza.
OPS! LINK QUEBRADO? Veja ESTE TOPICO antes e caso não encontre ENVIE seu email com link do tópico para [url=mailto://fivolution@hotmail.com]fivolution@hotmail.com[/url]. Agradecido.

@braços : ? )

A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
Avatar do usuário
sygecom
Administrador
Administrador
Mensagens: 7131
Registrado em: 21 Jul 2006 10:12
Localização: Alvorada-RS
Contato:

Re: enviar e-mail pelo xharbour

Mensagem por sygecom »

Srs. usando a Hb_sendmail() pode fazer exatamente como o Rochinha disse, através de um hyperlink vc pode colocar uma imagen no corpo do email.
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
caminformaticaSH
Usuário Nível 1
Usuário Nível 1
Mensagens: 6
Registrado em: 30 Mai 2008 15:49
Localização: Brasil

Re: enviar e-mail pelo xharbour

Mensagem por caminformaticaSH »

Olá pessoal, consegui enviar e-mail utilizando fwh + xharbour, agora estou com um dilema.

Da forma que estou fazendo, fica aberta uma tela até terminar de enviar o e-mail, prendendo o cliente que tem que ficar esperando o e-mail ser enviado, ele me diz que demora em torno de 2 minutos dependendo do e-mail.

Alguém poderia me enviar um pequeno PRG da rotina HB_SENDMAIL, compilado apenas com xharbour, ou seja, em modo console. Pois em modo console irá apenas abrir a tela do DOS, deixando o sistema livre pra continuar outras tarefas, como se fora o blat(programa para envio de e-mail em DOS).


Obrigado a todos !!!
Avatar do usuário
rochinha
Administrador
Administrador
Mensagens: 4664
Registrado em: 18 Ago 2003 20:43
Localização: São Paulo - Brasil
Contato:

Re: enviar e-mail pelo xharbour

Mensagem por rochinha »

Amiguinho

Em modo console geralmente qualquer rotina corre de forma procedural, ou seja, o passo seguinte só continua apos o termino do passo anterior.

Talvez neste caso te funcionasse uma rotina rodando em paralelo com o uso de funcao de ativação de rotinas em background.

Ao entrar na rotina de email apenas prepare o conteudo e acione uma rotina de envio no processo, assim sua rotina principal continua apenas passando pela rotina de email e deixando a mensagem a ser enviada.
OPS! LINK QUEBRADO? Veja ESTE TOPICO antes e caso não encontre ENVIE seu email com link do tópico para [url=mailto://fivolution@hotmail.com]fivolution@hotmail.com[/url]. Agradecido.

@braços : ? )

A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
caminformaticaSH
Usuário Nível 1
Usuário Nível 1
Mensagens: 6
Registrado em: 30 Mai 2008 15:49
Localização: Brasil

Re: enviar e-mail pelo xharbour

Mensagem por caminformaticaSH »

Olá rochinha, mas é justamente isso que estou fazendo, estou chamando um segundo programa apenas para enviar o e-mail. Veja abaixo:

cmai_ := "\SISFRE\TMAILSH.EXE "
cpar_ := alltrim(emai_rem2) + " " + ;
alltrim(emai_rem3) + " " + ;
alltrim(emai_rem) + " " + ;
alltrim(emai_des) + " " + ;
alltrim(emai_cop1) + " " + ;
alltrim(emai_tit) + " " + ;
alltrim(anex_em1) + " " + ;
alltrim(anex_em2) + " " + ;
alltrim(emai_rems)

arq_tmp := criatmp("A", .t.)
estru := {}
aadd(estru, {"PARA_TMP","C",150,00})
aadd(estru, {"servsmtp_","C",100,00})
aadd(estru, {"servpop3_","C",100,00})
aadd(estru, {"emaireme_","C",100,00})
aadd(estru, {"emaides1_","C",100,00})
aadd(estru, {"emaicop1_","C",100,00})
aadd(estru, {"emaiassu_","C",100,00})
aadd(estru, {"emaiarq1_","C",100,00})
aadd(estru, {"emaiarq2_","C",100,00})
aadd(estru, {"emaisenh_","C",100,00})
dbcreate(arq_tmp, estru)
use &arq_tmp alias TMPMAIL shared new
select TMPMAIL
if lastrec() = 0
adireg()
endif
reglock()
replace TMPMAIL->servsmtp_ with alltrim(emai_rem2)
replace TMPMAIL->servpop3_ with alltrim(emai_rem3)
replace TMPMAIL->emaireme_ with alltrim(emai_rem)
replace TMPMAIL->emaides1_ with alltrim(emai_des)
replace TMPMAIL->emaicop1_ with alltrim(emai_cop1)
replace TMPMAIL->emaiassu_ with alltrim(emai_tit)
replace TMPMAIL->emaiarq1_ with alltrim(anex_em1)
replace TMPMAIL->emaiarq2_ with alltrim(anex_em2)
replace TMPMAIL->emaisenh_ with alltrim(emai_rems)
TMPMAIL->(DbUnlock())
TMPMAIL->(DbCommit())
close TMPMAIL

* Aqui chama o program externo feito em FWH + xharbour110 apenas para enviar o e-mail.
WinExec("&cmai_" + arq_tmp)

Então eu suponho que se eu conseguir criar o programa de enviar e-mail via console, ele irá funcionar, já que será aberto uma tela do DOS para enviar o e-mail, assim como o blat faz, deixando assim o programa feito em fivewin, liberado para outras tarefas.
enfosoft
Usuário Nível 1
Usuário Nível 1
Mensagens: 25
Registrado em: 17 Mai 2007 08:15
Localização: Rio Grande do sul

Re: enviar e-mail pelo xharbour

Mensagem por enfosoft »

Eu uso sendmail( fonte nesse topico) do xharbour para enviar email. Funciona muito bem, mas estou comproblemas com servidores que requerem conexao segura. SSL. Alguem ja teve esse problema? Como resolver? Somente configuracao?
Desde Ja agradeco a ajuda.
Avatar do usuário
rochinha
Administrador
Administrador
Mensagens: 4664
Registrado em: 18 Ago 2003 20:43
Localização: São Paulo - Brasil
Contato:

Re: enviar e-mail pelo xharbour

Mensagem por rochinha »

Amiguinhos

Eu uso o Blat.EXE a muito tempo e sempre que posso atualizo o mesmo.

Não relatei problemas de envio mas tenho pra mim que o Blat tem recursos para sanar estes problemas.

Para o uso da função WinEXEC eu acrescento um parametro WinEXEC( ..., 0 ) ou WinEXEC( ..., 7 ) pois eles não devem prender o aplicativo e nem mesmo apresentar a tela do console.

No caso dos servidores é praxe logar no servidor de envio com senha e username da mesma para permitir a passagem por estas seguranças. Então, ao enviar um email é necessário passar o Username completo(email de quem envia), Password junto com o SMTP(para ser autenticado) e logo em seguida o email destino.

Para quem quizer analisar este codigo e tirar ideias e conclusões esteja a vontade pois usei muitas das ferramentas existentes na net:

Código: Selecionar todos

/*
 *
 * Arquivo...: nfwhmail.prg
 * Autor.....: Varios/Desconhecidos
 * Adaptacao.: Jose Carlos da Rocha
 * E-mail....: irochinha@itelefonica.com.br
 * Site......: www.5volution.com
 * Versao....: 1.0, 05/Ago/2006
 * Objetivo..: Oferecer suporte para envio e recebimento de email
 *
 */
#include "fivewin.ch"
#Include "dll.ch"

// CONSTANT Declarations
#define MAPI_ORIG 0
#define MAPI_TO   1
#define MAPI_CC   2
#define MAPI_BCC  3

// FLAG Declarations
#define MAPI_LOGON_UI           1 // &H1
#define MAPI_NEW_SESSION        2 // &H2
#define MAPI_DIALOG             8 // &H8
#define MAPI_UNREAD_ONLY       32 // &H20
#define MAPI_ENVELOPE_ONLY     64 // &H40
#define MAPI_PEEK             128 // &H80
#define MAPI_GUARANTEE_FIFO   256 // &H100
#define MAPI_BODY_AS_FILE     512 // &H200
#define MAPI_AB_NOMODIFY     1024 // &H400
#define MAPI_SUPPRESS_ATTACH 2048 // &H800
#define MAPI_FORCE_DOWNLOAD  4096 // &H1000
#define MAPI_OLE                1 // &H1
#define MAPI_OLE_STATIC         2 // &H2

/*
 *ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
 *³ ± FUNCAO: Usa o servico MAPI do Windows para interfacear com o Outlook ± ³
 *ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
 */
function MapiSend( cbody ,;
                   cserver ,;
                   cto ,;
                   cf ,;
                   csubject ,;
                   cu ,;
                   cpw ,;
                   cattach )
   aFiles       := {}
   aOrigin      := {}
   aRecipients  := {}
   cMsgType     := "L"      
   dDate        := date()   
   cTime        := Time()   
   cConversationID := "ID"  
   lReceipt     := .t.      
   lInteractive := .f.      
   aadd( aOrigin, cu )
   aadd( aRecipients, cto )
   aadd( aFiles, cattach ) 
   nRetCode := MAPILogon( 0, cServer, cpw, MAPI_LOGON_UI, 1 ) 
   if nRetCode != -1
      nRetCode := MAPISendMail( cSubject, cBody, "L",;
                  DToS( dDate ) + " " + cTime,;
                  cConversationID, lReceipt, lInteractive,;
                  aOrigin, aRecipients, aFiles )
      //? nRetCode
   else
      Mensagem( "Erro ao inicializar o servico de e-mail" )
   endif
   MAPILogoff()
   return .t.

/*
 *ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
 *³ ± FUNCAO: Faz uso do PySendMail para enviar emails diretamente pela internet ± ³
 *ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
 */
function PySendMail( cBody ,;
                     cSMTPServer ,;
                     cTo ,;
                     cFrom ,;
                     cSubject ,;
                     cUser ,;
                     cPassWord ,;
                     cAttach )
   oPySendMail:=TOleAuto():New( "Py.SendMail" )
   oPySendMail:SMTPServer := cSMTPServer
   oPySendMail:To         := cTo
   oPySendMail:From       := cFrom
   oPySendMail:User       := cUser
   oPySendMail:Password   := cPassWord
   oPySendMail:Subject    := cSubject
   oPySendMail:Body       := cBody
   //oPySendMail:PureText   := .t.
   if .not. empty( cAttach )
      oPySendMail:AttachFile( cAttach )
   endif
   //oPySendMail:InsertImage:= ""
   retorno := oPySendMail:Send()
   if upper(retorno) <> "OK"
      Mensagem( "Erro: " + retorno )
      return .f.
   endif
   return .t.
     
/*
 *ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
 *³ ± FUNCAO: Faz uso do BLAT para enviar emails diretamente pela internet ± ³
 *ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
 */
function blat( cbody ,;
               cserver ,;
               cto ,;
               cf ,;
               csubject ,;
               cu ,;
               cpw ,;
               cattach )
     BlatCMD := [ blat.txt] + ;
                [ -server ]   + alltrim(cserver) + ;
                [ -to ]       + alltrim(cto) + ;
                [ -f ]        + alltrim(cf) + ;
                [ -mailfrom ] + alltrim(cf) + ;
                [ -subject "] + alltrim(csubject) + ["] + ;
                [ -r ]        + ;
                [ -u ]        + alltrim(cu) + ;
                [ -pw ]       + alltrim(cpw) + ;
                [ -log "email.log" -debug ] + ;
                iif( empty( cAttach ),[],[ -attach "] + alltrim(cattach) + ["])
     cMacro="BLAT.EXE " + BlatCMD
     fErase( "email.log" )
     cBody := FormHtml( cSubject, cBody )
     memowrit( "blat.txt", cbody )
     //memowrit( "blat.bat", cMacro )
     WinExec( cMacro, 0 )
     if file( "blat.log" )
        BlatLOG := memoread( "email.log" )
        if "ERROR" $ Upper(BlatLOG)
            Mensagem( "Erro: arquivo de BLAT.LOG foi criado" )
            return .f.
        endif
     endif
     RETURN .T.

/*
 *ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
 *³ ± FUNCAO: Faz uso do MAPISEND p enviar email diretamente pela internet ± ³
 *ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
 */
function MapiSend2( cbody ,;
                   cserver ,;
                   cto ,;
                   cf ,;
                   csubject ,;
                   cu ,;
                   cpw ,;
                   cattach )
     MapiCMD := [ -u "] + alltrim(cu) + ["] + ;
                [ -p "] + alltrim(cpw) + ["] + ;
                [ -r "] + alltrim(cto) + ["] + ;
                [ -s "] + alltrim(csubject) + ["] + ;
                [ -m "] + alltrim(cbody) + ["] + ;
                iif( empty( cAttach ),[],[ -f "] + alltrim(cattach) + ["]) + ;
                [ -l email.log ]
     cMacro := "MAPISEND.EXE " + MapiCMD
     memowrit( "mapisend.bat", cMacro )
     errfile   := "MapiSend.tmp"
     errhandle := fcreate(errfile) // Cria o arquivo de controle
     errhandle := FOPEN(errfile,1) // Abre travando o arquivo de controle
     fErase( "email.log" )
     WinExec( cMacro, 0 )
     SysWait(2.5)
     fclose(errfile) // Fecha o arquivo de controle
     ferase(errfile) // Elimina o arquivo de controle
     if file( "mapisend.log" )
        MapiLOG := memoread( "email.log" )
        if "ERROR" $ Upper(MapiLOG)
            Mensagem( "Erro: arquivo de MAPISEND.LOG foi criado" )
            return .f.
        endif
     endif
     RETURN .T.

/*
 *ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
 *³ ± FUNCAO: Faz uso do CONVERTDOC para transformar arquivos .RTF em HTML ± ³
 *ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
 */
function ConvertDOC( cRTFFile, cHTMLFile )
     CnvtCMD := [ /S ] + alltrim(cRTFFile) + ;
                [ /T ] + alltrim(cHTMLFile) + ;
                [ /F5 /C4 /M2 ] 
     cMacro="convertdoc.exe " + CnvtCMD
     WinExec( cMacro, 0 )
     RETURN .T.

/*
 *ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
 *³ ± FUNCAO: Faz uso do GETMAIL para receber emails diretamente pela internet ± ³
 *ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
 */
function GetMail( cuser ,; 
                  cpass ,; 
                  cserver ) 
     GetMCMD := " -u "   + alltrim(cuser) + ; 
                " -pw "  + alltrim(cpass) + ; 
                " -s "   + alltrim(cserver) 
     cMacro="GETMAIL.EXE" + GetMCMD 
     memowrit( "get.bat", cMacro ) 
     ? cMacro 
     MsgRun( "Recebendo de "+LOWER(cServer)+"..." ) 
     WinExec( "get.bat", 0 ) 
     RETURN .T. 

/*
 *ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
 *³ ± FUNCAO: Faz uso do BLAT para enviar emails diretamente pela internet ± ³
 *ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
 */
Function SendIELink( oIEWnd, cLink, lVisivel, lCapture, lToolBar, lStatusBar, lMenuBar, lQuit )
   local oIE
   Default lVisivel:=.f., lCapture:=.f., lQuit:=.f.,;
           lToolBar:=.f., lStatusBar:=.f., lMenuBar:=.f.
   oIE:=TOleAuto():New( "InternetExplorer.Application" )
   oIE:Visible   := lVisivel
   oIE:ToolBar   := lToolBar
   oIE:StatusBar := lStatusBar
   oIE:MenuBar   := lMenuBar
   oIE:Top       := 060
   oIE:Left      := 005
   oIE:Height    := 600
   oIE:Width     := 800
   oIE:Navigate( cLink )
   if lQuit
      SysWait(.60)
      oIE:Quit()
   endif
   oIE:End()
   if lCapture
      FindIE(oIEWnd)
   endif
   SysRefresh()
   return nil

/*
 *ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
 *³ ± FUNCAO: ±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±± ³
 *ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
 */
Function SendSMSClaro( cDestDDD, cDestTEL, cMensagem, cOrigem, cOrigDDD, cOrigTEL, cLetras )
   local hE, cVar1, cVar2, cVar3, cVar4, cVar5, cLink
   cVar1 := "http://www2.claro.com.br/torpedoweb/popup_senderJava.asp?\ "
   cVar2 := "ddd_para="+alltrim(cDestDDD)
   cVar3 := "&telefone_para="+alltrim(cDestTEL)
   cVar4 := "&nome_de="+LigaString(alltrim(cOrigem))
   cVar5 := "&ddd_de="+alltrim(cOrigDDD)
   cVar6 := "&\ telefone_de="+alltrim(cOrigTEL)
   cVar7 := "&msg="+LigaString(alltrim(cMensagem))
   cVar8 := "&caract="+strzero(cLetras,3)
   cLink := cVar1+cVar2+cVar3+cVar4+cVar5+cVar6+cVar7+cVar8
   hE := CreateOleObject("InternetExplorer.Application")
   OLESetProperty(hE,"Visible", .T.)
   OLESetProperty(hE,"ToolBar", .T.)
   OLESetProperty(hE,"StatusBar", .T.)
   OLESetProperty(hE,"MenuBar", .T.)
   OLEInvoke(hE,"Navigate",cLink)
   SysRefresh()
   return nil

Function LigaString( cFrase )
   do while (AT( " ", cFrase ) > 0)
      cFrase := StrTran( cFrase, " ", "+" )
   enddo
   return cFrase

/*
 *ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
 *³ ± FUNCAO: Tentar fazer envio de SMS usando o MS SMS Sender e um celular± ³
 *ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
 */
function MSSMSSend( cTelefone , cMensagem )
     SmsCMD := [ /p:] + cTelefone + ;
               [ -m:] + cMensagem + ;
               [ /l ]
     cMacro="smssend " + SmsCMD
     MsgRun( "Enviando SMS..." )
     memowrit( "sms.bat", cMacro )
     WinExec( "sms.bat", 7 )
     if file( "sms.log" )
        MapiLOG := memoread( "sms.log" )
        if "ERROR" $ Upper(MapiLOG)
            MsgStop( MapiLOG )
        endif
        fErase( "sms.log" )
     endif
     RETURN .T.

/*
 *ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
 *³ ± FUNCAO: ±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±± ³
 *ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
 */
function CheckPop3( oMsgMail, cPOP3Host, cSender, cReplyTo, cMsg, cUser, cPass, bDone, cSMTPHost )
   LOCAL oTSmtp, oPop, Value:=0
   DEFAULT cSMTPHost := 'smtp.itelefonica.com.br'   ,;
           cPOP3Host := 'pop3.itelefonica.com.br'   ,;
           cSender   := 'irochinha@itelefonica.com.br',;
           cReplyTo  := 'konectiva@konectiva.com.br',;
           cMsg      := 'teste com fivewin'         ,;
           cUser     := 'irochinha'                 ,;
           cPass     := '200196'                    ,;
           bDone     := .t.
   if IsInternet( "www.ig.com.br" ) // InternetSt(@value,0)
      WsaStartUp()
      cIp := GETHOSTBYNAME( cPOP3Host )
      WsaCleanUp()
      oTSmtp := TSmtp():New( cIP )
      oTSmtp := TSmtp():New( cIP )
      oPop := TPOP3():New( cIP, Nil, cUser, cPass )
      oPop:bConnecting := {|| MsgRun( "Conectando a " + cPOP3Host + " (" + oPop:cIPServer + ") e esperando resposta..." ) }
      oPop:bConnected  := {|| MsgRun( "Checando por mensagens de email..." ) }
      oPop:bDone       := {|| ReadEmails( oPop, oMsgMail, cPOP3Host ) }
      oPop:lDelMsgs    := .f.
      //oPop:oSocket:lDebug   := .T.      // uncomment to create log file
      //oPop:oSocket:cLogFile := "pop3.log"
      oPop:GetMail( .T. )                 // just check if we have mail waiting...
      oWnd:oMsgBar:InsItem( oMsgMail, 2 )
      //msgstop( 'teste' ) // oMsgMail )
      oTSmtp:end()
   endif
   Return Nil

function ReadEmails( oInMail, oMsgMail, cPOP3Host )
   local n,oWndINet
   if Len( oInMail:aMsgs ) > 0
      MsgInfo( "Total emails: " + Str( Len( oInMail:aMsgs ) ) )
      //for n = 1 to Len( oInMail:aMsgs )
      //    memowrit( "pop3"+strzero(n,3)+".msg", oInMail:aMsgs[ n ] )
      //next
      Mensagem("Existem "+alltrim(Str( Len( oInMail:aMsgs ) ))+" novas mensagens em sua caixa de email." )
      user_emails := Len( oInMail:aMsgs )
      //oMsgItemMail:cToolTip := "Existem "+alltrim(Str( Len( oInMail:aMsgs ) ))+" novas mensagens em sua caixa de email."
      //oDSKlbx3:Refresh()
   else
      //oMsgItemMail:cToolTip := "Nenhuma mensagem em " + cPOP3Host
      oWnd:SetMsg( "Nenhuma mensagem em " + cPOP3Host )
   endif
   return nil

function CheckEmails( oInMail )
   contator := ADIR( "*.msg" )
   if Contator != 0
      declare txt_nomes[ contator ]
      adir( "*.msg", txt_nomes )
      for Contator := 1 TO len( txt_nomes )
          SaveEmails( oInMail )
          ferase( txt_nomes[contador] )
      next
   endif
   SysRefresh()
   return .t.

function SaveEmails( oInMail )
   local n
   if !file( "EMAIL.DBF" )
      ESTRU_DBF := { ;
                   { "DATA"    , "D",  8, 0 } , ;
                   { "HORA"    , "C",  8, 0 } , ;
                   { "PARA"    , "C", 30, 0 } , ;
                   { "DESTINO" , "C", 30, 0 } , ;
                   { "DE"      , "C", 30, 0 } , ;
                   { "ORIGEM"  , "C", 30, 0 } , ;
                   { "ANEXO"   , "C", 20, 0 } , ;
                   { "ASSUNTO" , "C", 30, 0 } , ;
                   { "MENSAGEM", "M", 10, 0 } , ;
                   { "STATUS"  , "C", 20, 0 } }
      dbCreate( "EMAIL", ESTRU_DBF )
   else
      use EMAIL new shared
   endif
   for n = 1 to Len( oInMail:aMsgs )
       oWnd:SetMsg( "Lendo "+str(n,2)+" de "+str(Len( oInMail:aMsgs )) )
       sele email
       append blank
       email->assunto  := strtran( 'Subject:','',;
                                   substr( oInMail:aMsgs[ n ], ;
                                           at('Subject: ',oInMail:aMsgs[ n ]) ) )
       email->de       := strtran( 'From:','',;
                                   substr( oInMail:aMsgs[ n ], ;
                                           at('From: '   ,oInMail:aMsgs[ n ]) ) )
       email->para     := strtran( 'To:','',;
                                   substr( oInMail:aMsgs[ n ], ;
                                           at('To: '     ,oInMail:aMsgs[ n ]) ) )
       email->mensagem := oInMail:aMsgs[ n ]
       commit
   next
   return nil

/*
 *ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
 *³ ± FUNCAO: ±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±± ³
 *ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
 */
function SendMail2( cSMTPHost, cSender, aReplyTo, cMsg, cSubject, cUser, cPass, bDone )
   LOCAL oOutMail, cIp
   DEFAULT cSMTPHost := 'smtp.itelefonica.com.br'                      ,;
           cSender   := 'irochinha@itelefonica.com.br'                ,;
           aReplyTo  := { 'konectiva@konectiva.com.br' }       ,;
           cMsg      := 'teste com fivewin'                   ,;
           cSubject  := 'Teste de envio de mensagem via TSmtp',;
           aAttach   := { "c:\autoexec.bat", "c:\config.sys" },;
           cUser     := 'irochinha'                           ,;
           cPass     := '200196'                              ,;
           bDone     := .t.
   WsaStartUp()
   cIp := GETHOSTBYNAME( cSMTPHost )
   WsaCleanUp()
   oOutMail = TSmtp():New( cIp )        // mail server IP
   oOutMail:bConnecting = { || oWnd:SetMsg( "Conectando a "+cSender+"..." ) }
   oOutMail:bConnected  = { || oWnd:SetMsg( "Conectado" ) }
   oOutMail:bDone       = { || oWnd:SetMsg( "Mensagem enviada com sucesso" ) }
   oOutMail:SendMail( cSender ,; // From
                      aReplyTo,; // To
                      cMsg    ,; // Msg Text
                      cSubject,; // Subject
                      aAttach )  // attached files
   return nil

/*
 *ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
 *³ ± FUNCAO: ±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±± ³
 *ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
 */
Function SendMail( cSMTPHost, cSender, cTo, cReplyTo, cSubject, cMsg, ;
                   lReceipt, lAuth, cUser, cPass, lPop3, cPOP3Host, cAttach, cSilent )
   LOCAL oInit
   DEFAULT cSMTPHost := 'smtp.itelefonica.com.br'     ,;
           cPOP3Host := 'pop3.itelefonica.com.br'     ,;
           cTo       := 'jscrocha@terra.com.br'       ,;
           cSender   := 'irochinha@itelefonica.com.br',;
           cReplyTo  := 'jscrocha@terra.com.br'       ,;
           cAttach   := 'c:\autoexec.bat'             ,;
           lReceipt  := .t.                           ,;
           lAuth     := .t.                           ,;
           lPop3     := .t.                           ,;
           cSilent   := 'S'                           ,;
           cSubject  := '** teste com fivewin **'     ,;
           cMsg      := 'teste com fivewin'           ,;
           cUser     := 'irochinha'                   ,;
           cPass     := '200196'   
   if IsInternet( "www.ig.com.br" ) // InternetSt(@value,0)
      oInit := TSmtp():New( cSMTPHost )
      oMail := TSmtp():New( cSMTPHost, , lAuth, cUser, cPass )
      //oMail:cReplyTo         := cReplyTo
      oMail:nGMT             := 8   // 8 = Pacific Standard Time (GMT -08:00) - Adjust this to your own Time Zone!
      oMail:nDelay           := 1
      *oMail:lTxtAsAttach    := .F.         // uncomment to force txt, log and htm files as inline as opposed to attachement
      oMail:oSocket:lDebug   := .T.         // uncomment to create log file
      oMail:oSocket:cLogFile := "smtp.log"
      if cSilent = 'N'
         MsgRun( "Conectando a " + cSMTPHost + " (" + oMail:cIPServer + ") a aguardando resposta..." )
         MsgRun( "Conectado e enviando email e anexos..." )
      endif
      oMail:SendMail( cSender, ;                             // from/de
                      { cTo }, ;                             // to/para (arreglo) - I use cSender here also because it's an "autotest". Actually you would type a different address here
                      cMsg,;                 // Body/Mensaje
                      cSubject,;             // Subject/Asunto
                      { cAttach }, ;         //  Array of filenames to attach/Arreglo de nombres de archivos a agregar
                      { }, ;                 // aCC
                      { cSender }, ;         // aBCC
                      lReceipt, ;            // Return Receipt/acuse de recibo
                      cMsg )                 // msg in HTML format/mensaje en HTML
      oInit:end()
   ELSE
      Mensagem( "Desconectado da internet. Mensagem nao pode ser enviada." )
   ENDIF
   Return Nil
/*function EmailDeliver( cPOP3Host, cSender, cTo, cMsg, cAttach, ;
                              cReplyTo, cUser, cPass, cSMTPHost )
   LOCAL oTSmtp, oPop, Value:=0
   DEFAULT cSMTPHost := 'smtp.itelefonica.com.br'     ,;
           cPOP3Host := 'pop3.itelefonica.com.br'     ,;
           cSender   := 'irochinha@itelefonica.com.br',;
           cTo       := 'irochinha@itelefonica.com.br',;
           cReplyTo  := 'konectiva@konectiva.com.br'  ,;
           cMsg      := 'teste com Fivewin/Harbour'   ,;
           cAttach   := "mail.prg"                    ,;
           cUser     := 'irochinha'                   ,;
           cPass     := '200196'
   oTSmtp           := tSendMail():New()
   oTSmtp:csmtp     := cSMTPHost
   oTSmtp:cfrom     := cSender
   oTSmtp:cto       := cTo
   oTSmtp:ccc       := ''
   oTSmtp:csubject  := "Teste com Harbour TSndMail()"
   oTSmtp:cmsgbody  := cMsg
   oTSmtp:cbinfile  := cAttach
   oTSmtp:ngmt      := +7
   oTSmtp:cpriority := 3
   oTSmtp:ccomment  := "This is a Test of Harbour TSndMail()"
   oTSmtp:send()
   RETURN oTSmtp:nError()*/

/* *************************************************************************
      @ 2.5,25.5 LISTBOX oLbx FIELDS ;
              aHBitmaps[ iif( DELETED(),3,1) ],; 
                   DTOC( EMAIL->DATA ), EMAIL->HORA, EMAIL->PARA, EMAIL->DESTINO, EMAIL->DE, EMAIL->ORIGEM, EMAIL->ANEXO, EMAIL->ASSUNTO, EMAIL->MENSAGEM, EMAIL->STATUS    ;
            ON LEFT DBLCLICK (CADASTRA( oLbx, "MOSTRA" ),oLbx:GoTop(), oLbx:Refresh()) ;
            HEADERS "ok",;
                   "DATA", "HORA", "PARA", "DESTINO", "DE", "ORIGEM", "ANEXO", "ASSUNTO", "MENSAGEM", "STATUS"    ;
            FIELDSIZES 16,;
                       FieldTam( "DATA" ),;
                       FieldTam( "HORA" ),;
                       FieldTam( "PARA" ),;
                       FieldTam( "DESTINO" ),;
                       FieldTam( "DE" ),;
                       FieldTam( "ORIGEM" ),;
                       FieldTam( "ANEXO" ),;
                       FieldTam( "ASSUNTO" ),;
                       FieldTam( "MENSAGEM" ),;
                       FieldTam( "STATUS" )  ;
            ALIAS "EMAIL" ; 
            FONT oFnt ;
            OF oWnd2
************************************************************************* */

/*
 *ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
 *³ ± FUNCAO: ±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±± ³
 *ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
 */
function _SendMail( cHost, cSender, cReplyTo, cSubject, cMsg, lReceipt, lAuth, cUser, cPass, lPop3, cPOP3Host  )
   LOCAL oInit
   oInit := TSmtp():New( cHost )
   oMail := TSmtp():New( cHost, , lAuth, cUser, cPass ) // [jlalin], IBTC
   oMail:cReplyTo         := cReplyTo
   oMail:nGMT             := 8   // 8 = Pacific Standard Time (GMT -08:00) - Adjust this to your own Time Zone!
   oMail:nDelay           := 1
   *oMail:lTxtAsAttach    := .F.         // uncomment to force txt, log and htm files as inline as opposed to attachement
   oMail:oSocket:lDebug   := .T.         // uncomment to create log file
   oMail:oSocket:cLogFile := "smtp.log"
   oMail:bConnecting      := {|| oWnd:SetMsg( "Conectando a " + cHost + " (" + oMail:cIPServer + ") a aguardando resposta..." ) }
   oMail:bConnected       := {|| oWnd:SetMsg( "Conectado e enviando email e anexos..." ) }
   oMail:SendMail( ;
      'jscrocha@terra.com.br', ;             // from/de
      { 'jscrocha@terra.com.br' }, ;         // to/para (arreglo) - I use cSender here also because it's an "autotest". Actually you would type a different address here
      cMsg,;                 // Body/Mensaje
      cSubject,;             // Subject/Asunto
      { "smtptest.prg" }, ;  //  Array of filenames to attach/Arreglo de nombres de archivos a agregar
      { }, ;                 // aCC
      { cSender }, ;         // aBCC
      lReceipt, ;            // Return Receipt/acuse de recibo
      cMsg )                 // msg in HTML format/mensaje en HTML
   oInit:end()
   Return .T.

Function FormHtml( cSubject, cBody )
   Local cOpen := "", cClose := ""
   cHTML := ;
      '<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"' + CRLF + ;
      '                      "http://www.w3.org/TR/1999/REC-html401-19991224/loose.dtd">' + CRLF + ;
      '<html>' + CRLF + ;
      '<head>' + CRLF + ;
      '   <title>' + cSubject + '</title>' + CRLF + ;
      '   <meta http-equiv="Content-Type"' + CRLF + ;
      '         content="text/html; charset=iso-8859-1">' + CRLF + ;
      '</head>' + CRLF + ;
      '<body>' + CRLF + ;
      cBody + CRLF + ;
      '</body>' + CRLF + ;
      '</html>'
   Return cOpen + cHTML + cClose

**************************************************************************
DLL32 FUNCTION MAPILogon( UIParam AS _INT, ;
                          sUser AS STRING, ;
                          Password AS STRING, ;
                          Flags AS _INT, ;
                          Reserved AS _INT, ;
                          Session AS _INT ) AS LONG PASCAL;
   FROM "MAPILogonN" LIB "Mapi32.dll" 

DLL32 FUNCTION MAPISendDocuments( UIParam AS _INT, ;
                          DelimStr AS STRING, ;
                          FilePaths AS STRING, ;
                          FileNames AS STRING, ;
                          Reserved AS _INT ) AS LONG PASCAL;
   FROM "MAPISendDocuments" LIB "Mapi32.dll" 

DLL32 FUNCTION RTF2HTML( source AS STRING, ;
                         destination AS STRING, ;
                         options AS _INT, ;
                         bgcolor AS STRING, ;
                         title AS STRING, ;
                         dpi AS _INT ) AS LONG PASCAL;
   FROM "EXRTF2WEB" LIB "IRun.dll" 

/*
Declare Function MAPILogoN Lib "MAPI.DLL" (ByVal UIParam&, ByVal sUser$, ByVal Password$, ByVal Flags&, ByVal Reserved&, Session&) As Long
Declare Function MAPILogoff Lib "MAPI.DLL" (ByVal Session&, ByVal UIParam&, ByVal Flags&, ByVal Reserved&) As Long

Declare Function MAPIFindNext Lib "MAPI.DLL" Alias "BMAPIFindNext" (ByVal Session&, ByVal UIParam&, MsgType$, SeedMsgID$, ByVal Flag&, ByVal Reserved&, MsgId$) As Long

Declare Function BMAPIReadMail Lib "MAPI.DLL" (lMsg&, nRecipients&, nFiles&, ByVal Session&, ByVal UIParam&, MessageID$, ByVal Flag&, ByVal Reserved&) As Long
Declare Function BMAPIGetReadMail Lib "MAPI.DLL" (ByVal lMsg&, Message As MAPIMessage, Recip As mapirecip, File As mapifile, Originator As mapirecip) As Long

Declare Function MAPISendDocuments Lib "MAPI.DLL" (ByVal UIParam&, ByVal DelimStr$, ByVal FilePaths$, ByVal FileNames$, ByVal Reserved&) As Long

Declare Function MAPISaveMail Lib "MAPI.DLL" Alias "BMAPISaveMail" (ByVal Session&, ByVal UIParam&, Message As MAPIMessage, Recipient As mapirecip, File As mapifile, ByVal Flags&, ByVal Reserved&, MsgId$) As Long
Declare Function mapideletemail Lib "MAPI.DLL" (ByVal Session&, ByVal UIParam&, ByVal MsgId$, ByVal Flags&, ByVal Reserved&) As Long

Declare Function MAPISendMail Lib "MAPI.DLL" Alias "BMAPISendMail" (ByVal Session&, ByVal UIParam&, Message As MAPIMessage, Recipient As mapirecip, File As mapifile, ByVal Flags&, ByVal Reserved&) As Long

Declare Function BMAPIAddress Lib "MAPI.DLL" (lInfo&, ByVal Session&, ByVal UIParam&, Caption$, ByVal nEditFields&, Label$, nRecipients&, Recip As mapirecip, ByVal Flags&, ByVal Reserved&) As Long
Declare Function BMAPIGetAddress Lib "MAPI.DLL" (ByVal lInfo&, ByVal nRecipients&, Recipients As mapirecip) As Long

Declare Function MapiDetails Lib "MAPI.DLL" Alias "BMAPIDetails" (ByVal Session&, ByVal UIParam&, Recipient As mapirecip, ByVal Flags&, ByVal Reserved&) As Long
Declare Function MapiResolveName Lib "MAPI.DLL" Alias "BMAPIResolveName" (ByVal Session&, ByVal UIParam&, ByVal UserName$, ByVal Flags&, ByVal Reserved&, Recipient As mapirecip) As Long
*/
Apesar de usar este codigo com Fivewin ele pode ser portado para o Clipper, xHarbour e outras GUIs com pequenas modificações pois se trata de um código que faz uso de aplicativo externo, criando o script necessário para sua execução.
OPS! LINK QUEBRADO? Veja ESTE TOPICO antes e caso não encontre ENVIE seu email com link do tópico para [url=mailto://fivolution@hotmail.com]fivolution@hotmail.com[/url]. Agradecido.

@braços : ? )

A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
Avatar do usuário
sygecom
Administrador
Administrador
Mensagens: 7131
Registrado em: 21 Jul 2006 10:12
Localização: Alvorada-RS
Contato:

Re: enviar e-mail pelo xharbour

Mensagem por sygecom »

enfosoft escreveu:Eu uso sendmail( fonte nesse topico) do xharbour para enviar email. Funciona muito bem, mas estou comproblemas com servidores que requerem conexao segura. SSL. Alguem ja teve esse problema? Como resolver? Somente configuracao?
Desde Ja agradeco a ajuda.
Quais os parametros que esta usando na sendmail() ?
já habilitou a autenticação para smtp ? e qual porta usa de saida esse servidor usa ?
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
enfosoft
Usuário Nível 1
Usuário Nível 1
Mensagens: 25
Registrado em: 17 Mai 2007 08:15
Localização: Rio Grande do sul

Re: enviar e-mail pelo xharbour

Mensagem por enfosoft »

Bom dia Leonardo.

Com base nas configuracoes para o outlook a porta para SMTP é 465. Como faco para habilitar a autenticação para smtp ?
Abaixo segue um exemplo de como estou tentando fazer o envio de email.

Código: Selecionar todos

local cSubject   := "Assunto do Email"
local aTo        := { "enio@datachamp.com.br" }
local cServerIp  := "smtp.ibest.com.br"
Local cFrom  := "eniofoppa@ibest.com.br"
Local cUser  := "eniofoppa@ibest.com.br"
local cMsg := " Mensagem do Email "
      cPass :="senha"   // informo a senha 

      IF hb_SendMail(cServerIP,465,cFrom,aTo, , , cMsg,cSubject, , cUser, cPass, 'pop.ibest.com.br' ,3, .F.  , .t.   ,.T. , .f. )=.T.
      else
 ? "Não foi possivel enviar o EMAIL"
      Endif
Obrigado pela ajuda
Enio
Avatar do usuário
sygecom
Administrador
Administrador
Mensagens: 7131
Registrado em: 21 Jul 2006 10:12
Localização: Alvorada-RS
Contato:

Re: enviar e-mail pelo xharbour

Mensagem por sygecom »

No ultimo parametro do exemplo que vc postou coloque como .T. (TRUE)
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
Responder