Página 2 de 7

Re: Email pelo Xharbour

Enviado: 18 Jun 2010 10:46
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.

Re: Email pelo Xharbour

Enviado: 18 Jun 2010 13:33
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 ...???

Re: Email pelo Xharbour

Enviado: 18 Jun 2010 14:32
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á ?!?

Re: Email pelo Xharbour

Enviado: 19 Jun 2010 22:02
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.

Re: Email pelo Xharbour

Enviado: 21 Jun 2010 08:12
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

Re: Email pelo Xharbour

Enviado: 21 Jun 2010 11:04
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.

Re: Email pelo Xharbour

Enviado: 22 Jun 2010 09:00
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é+++

Re: Email pelo Xharbour

Enviado: 23 Jun 2010 13:52
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+

Re: Email pelo Xharbour

Enviado: 23 Jun 2010 14:43
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.

Re: Email pelo Xharbour

Enviado: 13 Jul 2010 15:53
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

Re: Email pelo Xharbour

Enviado: 13 Jul 2010 19:13
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.

Re: Email pelo Xharbour

Enviado: 08 Fev 2011 18:02
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

Re: Email pelo Xharbour

Enviado: 08 Fev 2011 18:38
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).

Re: Email pelo Xharbour

Enviado: 08 Fev 2011 18:59
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

Re: Email pelo Xharbour

Enviado: 08 Fev 2011 20:32
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