Email pelo Xharbour

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

Moderador: Moderadores

Avatar do usuário
alaminojunior
Colaborador
Colaborador
Mensagens: 1717
Registrado em: 16 Dez 2005 21:26
Localização: Ubatuba - SP

Re: Email pelo Xharbour

Mensagem por alaminojunior »

gralak escreveu:Nossa ta complicado resolver isso em hahahhahah
Meu caro, se a questão é apenas e tão somente enviar email´s "via xHarbour", dê uma atençãozinha ao meu tópico mais acima.
Testei com servidores Gmail, à princípio usando a porta 465 (SMTP) e não obtive êxito, mas ao trocar para 25 foi igual quiabo.
Boa sorte.
Compilador xHarbour 1.2.3 + Embarcadero C++ 7.30
MySQL c/ SQLRDD
HwGui + GTWVG
Avatar do usuário
gralak
Usuário Nível 3
Usuário Nível 3
Mensagens: 233
Registrado em: 21 Mar 2007 13:28
Localização: Cianorte/PR

Re: Email pelo Xharbour

Mensagem por gralak »

Então amigo alaminojunior eu também utilizei o exemplo que vc postou no forum
porém também não foi o email para o destino ...
Vc tem alguma idéia do que pode ser ...???
Avatar do usuário
alaminojunior
Colaborador
Colaborador
Mensagens: 1717
Registrado em: 16 Dez 2005 21:26
Localização: Ubatuba - SP

Re: Email pelo Xharbour

Mensagem por alaminojunior »

Desse jeito não vai ?

Código: Selecionar todos

Function envia_email_pos
local cSubject  := hb_oemtoansi("PàS VENDA - ")+usuario
local        aTo:= { endereco@provedor.com.br }
local cServerIp := smtp.gmail.com
local cFrom     := fulanodetal@gmail.com
local cUser     := fulanodetal@gmail.com
local cMsg      := memoread("carta1.txt")
cPass           := alltrim(cdpar000->mpswd)
porta           := 25
pop3            := imap.gmail.com:993
if hb_SendMail(cServerIP,porta,cFrom,aTo,,,cMsg,cSubject,,cUser,cPass,pop3,1,.F.,.T.,.T.,.F.)=.T.
É como eu estou usando agora, e está indo.
Diferença de versões, será ?!?
Compilador xHarbour 1.2.3 + Embarcadero C++ 7.30
MySQL c/ SQLRDD
HwGui + GTWVG
Avatar do usuário
sygecom
Administrador
Administrador
Mensagens: 7131
Registrado em: 21 Jul 2006 10:12
Localização: Alvorada-RS
Contato:

Re: Email pelo Xharbour

Mensagem por sygecom »

gralak escreveu:Nossa ta complicado resolver isso em hahahhahah
agora ta dando um retorno com o seguite erro:

DISP_MEMBERNOTFOUND

oque seria ...
Deve ter algum parâmetro errado, faça um teste pelo Outlook se der certo com certeza no sistema vai dar também. Ou post como está usando para tentar identificar junto com você o que está errado.
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
Avatar do usuário
gralak
Usuário Nível 3
Usuário Nível 3
Mensagens: 233
Registrado em: 21 Mar 2007 13:28
Localização: Cianorte/PR

Re: Email pelo Xharbour

Mensagem por gralak »

Iai galera no anexo segue a maneira que eu estou fazendo como o exemplo do SYGECOM e o do alaminojunior
se vcs puderem me dizer onde esta o problema eu agradeço
Anexos
email2.prg
(32.99 KiB) Baixado 693 vezes
Avatar do usuário
alaminojunior
Colaborador
Colaborador
Mensagens: 1717
Registrado em: 16 Dez 2005 21:26
Localização: Ubatuba - SP

Re: Email pelo Xharbour

Mensagem por alaminojunior »

Gralak, faça o teste somente com as seguintes linhas:

Código: Selecionar todos

Function envia_email_pos()
local cSubject  := "Assunto de Gmail"//hb_oemtoansi("P…S VENDA - ")+usuario
local        aTo:= {"destino@servidor.com.br"}
local cServerIp := "smtp.gmail.com"
local cFrom     := "remetente@gmail.com"
local cUser     := "remetente@gmail.com"
local cMsg      := "Teste Email para Gmail"//memoread("carta1.txt")
cPass           := "123456"//alltrim(cdpar000->mpswd)
porta           := 25
pop3            := "imap.gmail.com:993"
if hb_SendMail(cServerIP,porta,cFrom,aTo,,,cMsg,cSubject,,cUser,cPass,pop3,1,.F.,.T.,.T.,.F.)=.T.
   msginfo("ok")
else
   msginfo("no")
endif   
return(.t.)
No seu exemplo, havia junto a função hb_sendmail() que no meu caso está original dentro de alguma lib. Você deve ter pego ela modificada para atender alguma necessidade.
Compilador xHarbour 1.2.3 + Embarcadero C++ 7.30
MySQL c/ SQLRDD
HwGui + GTWVG
Avatar do usuário
gralak
Usuário Nível 3
Usuário Nível 3
Mensagens: 233
Registrado em: 21 Mar 2007 13:28
Localização: Cianorte/PR

Re: Email pelo Xharbour

Mensagem por gralak »

Iai Parcero alaminojunior copiei exatamente a função que vc me passou
e troquei somente os remetentes,destinatario e senha
porem ainda não enviou ...
O fato de eu estar compilando com a Hwgui faz alguma difereça ?

Se tiver alguma idéia aguardo vlw té+++
clrod
Usuário Nível 2
Usuário Nível 2
Mensagens: 79
Registrado em: 17 Nov 2009 13:42
Localização: São Paulo - SP

Re: Email pelo Xharbour

Mensagem por clrod »

Olá

Nunca fiz esse teste, mas posso adinatar que tentar enviar uma mensagem pelo SMTP do Gmail sem autenticar a conta, sem ser por protocolo seguro, não vai rolar. Você precisará usar a porta segura (465 se não me engano), fazer toda a comunicação criptografada usando SSL (não sei como se faz isso no xHarbour, apenas no Harbour) e precisrá enviar um pedido de autenticação em uma conta válida no Gmail antes de enviar a mensagem em si.

O caminho é esse, agora espero que alguém possa te ajudar mais detalhadamnete com a implementação desses passos.

T+
Avatar do usuário
alaminojunior
Colaborador
Colaborador
Mensagens: 1717
Registrado em: 16 Dez 2005 21:26
Localização: Ubatuba - SP

Re: Email pelo Xharbour

Mensagem por alaminojunior »

clrod escreveu:mas posso adinatar que tentar enviar uma mensagem pelo SMTP do Gmail sem autenticar a conta, sem ser por protocolo seguro, não vai rolar. Você precisará usar a porta segura (465 se não me engano)
Aqui comigo simplesmente funciona usando o exemplo que postei. Porta 25.
E tem um cliente que também usa a porta 25, servidor Gmail, no ACBrNFeMonitor, porém com o recurso de conexão segura SMTP habilitado.

Verifique se o antivírus não está barrando os e-mail´s de saída.
Compilador xHarbour 1.2.3 + Embarcadero C++ 7.30
MySQL c/ SQLRDD
HwGui + GTWVG
Avatar do usuário
gralak
Usuário Nível 3
Usuário Nível 3
Mensagens: 233
Registrado em: 21 Mar 2007 13:28
Localização: Cianorte/PR

Re: Email pelo Xharbour

Mensagem por gralak »

Caros amigos que tnato me ajudaram na parada do email
finalmente consegui estou utilizando uma ferramenta chamada
CDOSYS que faz essa autentificação dica passada pelo amigo Leonardo
vlw pela atenção galera se eu puder ajudar alguém com a mesma duvida e só chamar
até++++++++++++ :D :D :D
Avatar do usuário
rochinha
Administrador
Administrador
Mensagens: 4664
Registrado em: 18 Ago 2003 20:43
Localização: São Paulo - Brasil
Contato:

Re: Email pelo Xharbour

Mensagem por rochinha »

Amiguinho,

Esta mensagem indica que o objeto CDO não foi criado ou voce esta tentando acessar um método ou propriedade não existente nele.

Em tempo as portas de acesso ao Live.com são 25 e 995

Em todo o caso mesmo correndo o risco de apresentar algo já colocado aqui, eu também uso CDO para envio de emails:

Código: Selecionar todos

...
  Private aProvedor := { { "UOL (Universo On-Line)"  ,'pop.uol.com.br'        ,'smtp.uol.com.br'        ,.t., 25,110,.f.},;
                         { "Terra"                   ,'pop.terra.com.br'      ,'smtp.terra.com.br'      ,.t., 25,110,.f.},;
                         { "IG (Internet Generation)",'pop.ig.com.br'         ,'smtp.ig.com.br'         ,.t.,465,995,.t.},;
                         { "iBest"                   ,'pop.ibest.com.br'      ,'smtp.ibest.com.br'      ,.t.,465,995,.t.},;
                         { "iTelefonica"             ,'pop.itelefonica.com.br','smtp.itelefonica.com.br',.t., 25,110,.f.},;
                         { "Gmail (Google Mail)"     ,'pop.gmail.com.br'      ,'smtp.gmail.com.br'      ,.t.,465,995,.f.},;
                         { "Yahoo"                   ,'pop.mail.yahoo.com.br' ,'smtp.mail.yahoo.com.br' ,.t., 25,110,.f.},;
                         { "Hotmail"                 ,'pop3.live.com'         ,'smtp.live.com'          ,.t., 25,995,.t.},;
                         { "BOL (Brasil On-Line)"    ,'pop3.bol.com.br'       ,'smtp.bol.com.br'        ,.t., 25,110,.f.},;
                         { "ITM Networks"            ,'mail.5volution.com.br' ,'mail.5volution.com.br'  ,.t., 25,110,.f.} }
  nPosicao    := 10 //ASCAN( aProvedor, "ITM Networks" )
  smtp_Port   := aProvedor[ nPosicao, 5 ]
  lAuth       := aProvedor[ nPosicao, 4 ]
  smtp_server := aProvedor[ nPosicao, 3 ]
  smtp_SSL    := aProvedor[ nPosicao, 7 ]
  //
  objCDOSYSCon:=TOleAuto():New( "CDO.Configuration" )
  objCDOSYSCon:Fields:Item( "http://schemas.microsoft.com/cdo/configuration/smtpserver"):Value       := smtp_server
  objCDOSYSCon:Fields:Item( "http://schemas.microsoft.com/cdo/configuration/smtpserverport"):Value   := smtp_Port
  objCDOSYSCon:Fields:Item( "http://schemas.microsoft.com/cdo/configuration/sendusing"):Value        := 2 
  objCDOSYSCon:Fields:Item( "http://schemas.microsoft.com/cdo/configuration/smtpauthenticate"):Value := 1 
  objCDOSYSCon:Fields:Item( "http://schemas.microsoft.com/cdo/configuration/sendusername"):Value     := smtp_user
  objCDOSYSCon:Fields:Item( "http://schemas.microsoft.com/cdo/configuration/sendpassword"):Value     := smtp_pass
  //objCDOSYSCon:Fields:Item( "http://schemas.microsoft.com/cdo/configuration/smtpconnectiontimeout"):Value := 30 
  objCDOSYSCon:Fields:update()
  objCDOSYSMail:=TOleAuto():New( "CDO.Message" )
  objCDOSYSMail:Configuration := objCDOSYSCon
  objCDOSYSMail:From          := mail_from
  objCDOSYSMail:To            := mail_to
  objCDOSYSMail:Subject       := mail_subject
  if lHtml
     objCDOSYSMail:HTMLBody   := mail_message
  else
     objCDOSYSMail:TextBody   := mail_message
  endif
  objCDOSYSMail:Send()
  ...
No caso de usar o BLAT neste exemplo faço uso de sua .DLL:

Código: Selecionar todos

...
    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) + ["])
     fErase( "email.log" )
     BlatLOG := SendB( BlatCMD )
...

DLL32 FUNCTION SendB( sBlatString AS STRING ) AS LONG PASCAL ;
      FROM "SendBlat" LIB "Blat.dll" 
No dois métodos eu consegui envio de emails para clientes/servidores Hotmail.

No caso de uso intensivo de chamadas via OLE é boa a pratica de criar o objeto já no inicio do programa e deixar sua variavel visivel.
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.
esbasso
Colaborador
Colaborador
Mensagens: 325
Registrado em: 24 Jan 2007 17:49
Localização: CHAPECO/SC

Re: Email pelo Xharbour

Mensagem por esbasso »

acho que tem algum bug no xharbour
ja tentei de tudo e da o erro

Error CDO.Message/3 DISP_E_MEMBERNOTFOUND: SEND - oError:genCode = 1001
Called from source\rtl\win32ole.prg->TOLEAUTO:SEND(0)
Called from C:\xHarbour\rotinas\hcdoemail.000->ENVIO2(185)
Called from C:\xHarbour\Estoque6\ESTOQUE.000->MAIN(301)

HwGUI 2.17 xHarbour build 1.2.1 Intl. (SimpLex) (Rev. 6733)
Date:08/02/11
Time:18:01:25

uma vergonha rsrsrs
funciona em qualquer outra linguagem menso aqui
Luis Fernando Basso
Desenvolvedor VFP + XHARBOUR + HWGUI
lfbasso@gmail.com
http://www.engersoft.com.br
marcosgambeta
Usuário Nível 3
Usuário Nível 3
Mensagens: 332
Registrado em: 16 Jun 2005 22:53

Re: Email pelo Xharbour

Mensagem por marcosgambeta »

esbasso escreveu: Error CDO.Message/3 DISP_E_MEMBERNOTFOUND: SEND - oError:genCode = 1001
Called from source\rtl\win32ole.prg->TOLEAUTO:SEND(0)
Called from C:\xHarbour\rotinas\hcdoemail.000->ENVIO2(185)
Called from C:\xHarbour\Estoque6\ESTOQUE.000->MAIN(301)
Basso,

Tente assim:

No lugar de
objCDOSYSMail:Send()
use
objCDOSYSMail:_Send()

Não testei aqui. Estou me baseando em algo que lí certa vez numa discussão (não me recordo se foi na lista de desenvolvedores do Harbour ou do xHarbour).
Atenciosamente,
Marcos Antonio Gambeta
esbasso
Colaborador
Colaborador
Mensagens: 325
Registrado em: 24 Jan 2007 17:49
Localização: CHAPECO/SC

Re: Email pelo Xharbour

Mensagem por esbasso »

infelizmente da o mesmo erro

Error CDO.Message/3 DISP_E_MEMBERNOTFOUND: _SEND - oError:genCode = 1001
Called from source\rtl\win32ole.prg->TOLEAUTO:_SEND(0)
Called from C:\xHarbour\rotinas\hcdoemail.prg->ENVIO2(186)
Called from C:\xHarbour\Estoque6\ESTOQUE.000->MAIN(266)

HwGUI 2.17 xHarbour build 1.2.1 Intl. (SimpLex) (Rev. 6733)
Date:08/02/11
Time:18:57:10

não consigo entender
pois é o ultimo comando e falha justamente no envio
nas demais propriedades tudo funciona

talvez seja algo no meu xharbour
Luis Fernando Basso
Desenvolvedor VFP + XHARBOUR + HWGUI
lfbasso@gmail.com
http://www.engersoft.com.br
Avatar do usuário
sygecom
Administrador
Administrador
Mensagens: 7131
Registrado em: 21 Jul 2006 10:12
Localização: Alvorada-RS
Contato:

Re: Email pelo Xharbour

Mensagem por sygecom »

Olá Basso,
Eu uso exatamente essa função com xHarbour 1.2.1 e funciona perfeitamente, até com Hotmail roda que é uma beleza.
Ex de como uso:

Código: Selecionar todos

**********************************************************************************************************************
FUNCTION CONFIG_MAIL(aFiles,cSubject,aQuem,cMsg,cServerIp,cFrom,cUser,cPass,vPORTSMTP,aCC,aBCC,vEMAIL_CONF,wSSL_EMAIL)
**********************************************************************************************************************
local lRet := .f.
local oCfg, oError
local lAut  := .t.

  TRY
    oCfg := CREATEOBJECT( "CDO.Configuration" )
      WITH OBJECT oCfg:Fields
           :Item( "http://schemas.microsoft.com/cdo/configuration/smtpserver"             ):Value := cServerIp
           :Item( "http://schemas.microsoft.com/cdo/configuration/smtpserverport"         ):Value := vPORTSMTP
           :Item( "http://schemas.microsoft.com/cdo/configuration/sendusing"              ):Value := 2
           :Item( "http://schemas.microsoft.com/cdo/configuration/smtpauthenticate"       ):Value := lAut
           :Item( "http://schemas.microsoft.com/cdo/configuration/smtpusessl"             ):Value := wSSL_EMAIL
           :Item( "http://schemas.microsoft.com/cdo/configuration/sendusername"           ):Value := alltrim(cUser)
           :Item( "http://schemas.microsoft.com/cdo/configuration/sendpassword"           ):Value := alltrim(cPass)
           //:Item( "http://schemas.microsoft.com/cdo/configuration/smtpconnectiontimeout"  ):Value := 30
  	 		  :Update()
      END WITH
      lRet := .t.
  CATCH oError
    MsgInfo( "Não Foi possível Enviar o e-Mail!"  +HB_OsNewLine()+ ;
             "Error: "     + Transform(oError:GenCode,   nil) + ";" +HB_OsNewLine()+ ;
             "SubC: "      + Transform(oError:SubCode,   nil) + ";" +HB_OsNewLine()+ ;
             "OSCode: "    + Transform(oError:OsCode,    nil) + ";" +HB_OsNewLine()+ ;
             "SubSystem: " + Transform(oError:SubSystem, nil) + ";" +HB_OsNewLine()+ ;
             "Mensaje: "   + oError:Description, "Atenção" )

  END
  //--> FIM DAS CONFIGURAÇOES.
  if lRet
     lRet := Envia_Mail(oCfg,cFrom,aQuem,aFiles,cSubject,cMsg,aCC,aBCC)
  endif

Return lRet

********************************************************************************
FUNCTION ENVIA_MAIL(oCfg,cFrom,cDest,aFiles,cSubject,cMsg,aCC,aBCC,vEMAIL_CONF)
********************************************************************************
  local aTo := {}
  local lRet := .f.
  local nEle, oError

  aTo      := { cDest } //--> PARA
  nEle := 1

   for i:=1 to len(aTo)
       TRY
         oMsg := CREATEOBJECT ( "CDO.Message" )
           WITH OBJECT oMsg
                :Configuration = oCfg
                :From = cFrom
                :To = aTo[i]
                :Cc = aCC
                :BCC = aBCC
                :Subject = cSubject
                :TextBody = cMsg
                For x := 1 To Len( aFiles )
                    :AddAttachment(AllTrim(aFiles[x]))
                Next
                IF vEMAIL_CONF=.T.
                   :Fields( "urn:schemas:mailheader:disposition-notification-to" ):Value := cFrom
                   :Fields:update()
                ENDIF
                :Send()
           END WITH
           lRet := .t.
       CATCH oError
           MsgInfo("Não Foi Possível Enviar," +HB_OsNewLine()+;
			                "a Mensagem: "             +HB_OsNewLine()+;
				            		 cSubject                   +HB_OsNewLine()+;
						             "p/ o eMail: " + aTo[i] +HB_OsNewLine()+;
                   " - Erro: " + + oError:Description , "Atenção" )
           lRet := .f.
		 END
   next

Return lRet
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
Responder