Página 1 de 7
Email pelo Xharbour
Enviado:
15 Jun 2010 17:48
por gralak
Iai galera estou precisando implementar email pelo Xharbour alguém saberia como eu posso fazer isso
que bibliotecas usar...
Ou se possivel alugum exemplo vlw té+++
Re: Email pelo Xharbour
Enviado:
15 Jun 2010 20:04
por anacatacombs
Caro Colega.
Já verificou se as classes TipMail, TipClientSmtp e TipClientPop não servem para o que vc precisa?
[]'s
Ana
Re: Email pelo Xharbour
Enviado:
15 Jun 2010 21:54
por alxsts
Olá!
Tem material recente sobre o assunto postado no fórum. Utilize o recurso de busca, que se encontra no canto superior direito da página.
Re: Email pelo Xharbour
Enviado:
16 Jun 2010 10:40
por gralak
Então amiga eu inclusive ja estou tentando usar a lib TIP porem com o SENDEMAIL
porem os email não vão para seu destino ...
segue como eu estou mandando
SERVER: smtp.live.com
PORTA: 25
USUARIO PARA EMAL:
meuemail@hotmail.comSENHA: ***************
SERVIDOR POP: pop3.live.com
REMETENTE:
remetente@hotmail.comDESTINATARIO:
destinatario@hotmail.comASSUNTO: teste
PRIORIDADE: 1
MENSAGEM: Teste 123456
Re: Email pelo Xharbour
Enviado:
16 Jun 2010 13:13
por sygecom
Re: Email pelo Xharbour
Enviado:
16 Jun 2010 17:24
por gralak
Caro amigo o exemplo com a SENDEMAIL para yahoo funcionou blz
mas e para hotmail e gmail que usa a porta direfente da 25 como
eu devo proceder nessa situação ???
Re: Email pelo Xharbour
Enviado:
16 Jun 2010 17:41
por sygecom
Em caso de uso com SSL tem que linkar a tipssl.lib(somente com xHarbour >=1.2.0) ou pode usar a rotina abaixo que com windows vai que é uma blz.:
http://www.fivewin.com.br/forum/topic.a ... 3&ARCHIVE=
Re: Email pelo Xharbour
Enviado:
16 Jun 2010 17:42
por Maligno
Pelo menos no caso do GMail, sei que exigem SSL. Então, tente a porta 587.
Re: Email pelo Xharbour
Enviado:
16 Jun 2010 22:13
por gralak
Então caro amigo Maligno eu ja tentei com a porta 587 mas também não deu certo
E amigo SYGECOM se vc puder disponilizar um exemplo de onde eu devo colocar
o trecho de código do exemplo que vc disponibilizou no link ???
vlw té+++
Re: Email pelo Xharbour
Enviado:
16 Jun 2010 22:26
por Maligno
Já não enviou antes algum eMail por servidor com autenticação SSL? Se é a primeira vez, realmente, vai precisar ou só da LIB, ou da LIB e das DLLs (mais provável) que ela por ventura necessite para a autenticação. Eu mesmo tenho de usar duas DLLs no C++ Builder. Mas isso depende da implementação.
Re: Email pelo Xharbour
Enviado:
16 Jun 2010 22:43
por alaminojunior
Re: Email pelo Xharbour
Enviado:
16 Jun 2010 23:24
por sygecom
gralak escreveu:E amigo SYGECOM se vc puder disponilizar um exemplo de onde eu devo colocar
o trecho de código do exemplo que vc disponibilizou no link ???
Não deixe de olhar a dica do colega Alamino, abaixo como estou usando com Gmail e Hotmail:
FUNCTION MAIN()
aFiles :={"c:\anexo.pdf"}
cSubject :="Asunto do Email"
aQuem :="destino@servidor.com.br"
cMsg :="Corpo da Mensagem"
cServerIp:="smtp.live.com"
cFrom :="emitente@hotmail.com"
cUser :="emitente@hotmail.com"
cPass :="senha"
vPORTSMTP:=25
aCC :="copia@hotmail.com"
aBCC :="copia_oculta@hotmail.com"
lCONF :=.F.
lSSL :=.T.
CONFIG_MAIL(aFiles,cSubject,aQuem,cMsg,cServerIp,cFrom,cUser,cPass,vPORTSMTP,aCC,aBCC,lCONF,lSSL)
RETURN
**********************************************************************************************************
FUNCTION CONFIG_MAIL(aFiles,cSubject,aQuem,cMsg,cServerIp,cFrom,cUser,cPass,vPORTSMTP,aCC,aBCC,lCONF,lSSL)
**********************************************************************************************************
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 := lSSL
: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,lCONF)
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
Re: Email pelo Xharbour
Enviado:
17 Jun 2010 16:52
por gralak
Então Amigos implemetei o código repassado pelo SYGECOM
mas retornou uma menssagem de erro até onde eu vi
no código tem uma variavel chamada wSSL_EMAIL oque deveria ir nela ... ????
Re: Email pelo Xharbour
Enviado:
17 Jun 2010 17:03
por sygecom
Desculpa na correria, coloquei errado, mas já ajustei no post do código.
Re: Email pelo Xharbour
Enviado:
18 Jun 2010 10:26
por gralak
Nossa ta complicado resolver isso em hahahhahah
agora ta dando um retorno com o seguite erro:
DISP_MEMBERNOTFOUND
oque seria ...
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 ?
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:
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:
...
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:
...
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 17: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 17: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 17: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 19: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:
**********************************************************************************************************************
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
Re: Email pelo Xharbour
Enviado:
08 Fev 2011 19:34
por sygecom
Veja que minha função está dentro de um TRY, é que as vezes se não configurar corretamente pode cair no erro mesmo, mas é só configurar certinho, usuario, senha, endereço smtp, se tem SSL e etc.. que vai certinho.
Re: Email pelo Xharbour
Enviado:
08 Fev 2011 20:08
por esbasso
MESMO ERRO usando sua função, tirei o TRY para poder colar o erro aqui
rror CDO.Message/3 DISP_E_MEMBERNOTFOUND: SEND - oError:genCode = 1001
Called from C:\xHarbour121\source\rtl\win32ole.prg->TOLEAUTO:SEND(0)
Called from C:\xHarbour\rotinas\hcdoemail.000->CDO_ENVIA_MAIL(258)
Called from C:\xHarbour\rotinas\hcdoemail.000->CONFIG_MAIL(225)
Called from C:\xHarbour\Estoque6\ESTOQUE.000->MAIN(268)
HwGUI 2.17 xHarbour build 1.2.1 Intl. (SimpLex) (Rev. 6733)
este erro não é questão de configurar
mas da falta de propriedade ou metodo do objeto OLE
a não ser que esta retornando uma mensagem errada sobre o erro
Re: Email pelo Xharbour
Enviado:
08 Fev 2011 21:10
por sygecom
É no mínimo estranho mesmo. Testei aqui com Windows 7 e com Windows XP e deu certo...
Re: Email pelo Xharbour
Enviado:
08 Fev 2011 21:47
por alaminojunior
Eu já notei erros como este, quando acontecía de não encontrar os arquivos para anexar. Não sei se é o caso.
Re: Email pelo Xharbour
Enviado:
08 Fev 2011 22:01
por esbasso
sim
resolvido
na realidade a mensagem não significa exatamente o que se supõe
MSDN:
Invoke returns DISP_E_MEMBERNOTFOUND if one of the following conditions occurs:
A member or parameter with the specified DISPID and matching cArgs cannot be found, and the parameter is not optional.
The member is a void function, and the caller did not set pVarResult to Null.
The member is a read-only property, and the caller set wFlags to DISPATCH_PROPERTYPUT or DISPATCH_PROPERTYPUTREF.
então o que ocasionava o erro era um erro de configuração
no caso foi esta linha
:Item( "http://schemas.microsoft.com/cdo/configuration/smtpusessl" ):Value := .F. //wSSL_EMAIL
SÓ FUNCIONA no meu caso se for FALSO
Re: Email pelo Xharbour
Enviado:
08 Fev 2011 22:27
por alaminojunior
Mas e se o servidor exigir que seja SSL ?
Não sei, não me lembro se faz alguma diferença (faz algum tempo que codifiquei esta função no sistema) mas eu linkey junto a tipssl.lib.
Re: Email pelo Xharbour
Enviado:
24 Fev 2011 09:58
por Wesllen
Bom dia,
Aproveitando o Topic.... alguém conhece uma forma de anexar arquivo html para enviar junto com arquivos XML?
Estou tentando fazer isso mas sempre que anexo o html dá erro e a mensagem não é enviada. Se eu retiro o html a mensagem segue normalmente.
Preciso fazer isso que que as NFe já sejam enviadas com os respectivos boletos.
Obs. uso o HB_SENDMAIL.
Agradeço pela ajuda.
[]'s
Re: Email pelo Xharbour
Enviado:
24 Fev 2011 12:43
por rochinha
Amiguinhos,
Para o envio via CDO estou usando somente este trecho na configuração:
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
Lembrando que CDO só vai funcionar se tiver conectado a internet pois ele ira se configurar usando o site da Micro$oft.
Para o envio de conteúdo em texto plano ou HTML eu faço assim:
...
objCDOSYSMail:Configuration := objCDOSYSCon
objCDOSYSMail:From := mail_from
objCDOSYSMail:To := mail_to
objCDOSYSMail:Subject := mail_subject
if lHtml // critica se quero HTML ou Texto plano
objCDOSYSMail:HTMLBody := mail_message // + CRLF + CRLF + MemoRead( mail_attach )
else
objCDOSYSMail:TextBody := mail_message // + CRLF + CRLF + MemoRead( mail_attach )
endif
No BLAT eu faço assim:
BlatCMD := [ blat.txt] + ;
[ -to ] + alltrim(cto) + ;
[ -server ] + alltrim(cserver) + ;
...
iif( lHtml, [ -html ], [] )
Para o BLAT.TXT faço assim:
...
if lHtml
cBody := FormHtml( cSubject, cBody )
endif
memowrit( "blat.txt", cbody )
...
Function FormHtml( cSubject, cBody )
Local cOpen := '<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/1999/REC-html401-19991224/loose.dtd">' + CRLF
Local cClose := CRLF + 'Nossa empresa envia email somente para pessoas e empresas cadastradas em nosso sistema.' + CRLF + ;
'Caso tenha duvidas favor entrar em contato com nossa central de atendimento ao cliente.'
cHTML := ;
'<html>' + CRLF + ;
'<head>' + CRLF + ;
' <meta http-equiv="Content-Type"' + CRLF + ;
' content="text/html; charset=iso-8859-1">' + CRLF + ;
'</head>' + CRLF + ;
'<body>' + CRLF + ;
'<pre>' + CRLF + ;
cBody + CRLF + ;
'</pre>' + CRLF + ;
'</body>' + CRLF + ;
'</html>'
Return cOpen + cHTML + cClose
Email pelo Xharbour
Enviado:
10 Jan 2018 23:41
por Shark
Este tópico é bem antigo mas o meiu problema é idêntico e bem recente. Alguém conseguiu afinal desvendar o mistério do objeto "SEND" não existir no CDO.Message?
Imagino que como está sendo utilizado um recurso externo através de OLE, pode ser um problema relacionado a versões de sistema operacional nao?
Atualmente qual método usado para enviar email usando xHarbour?
Email pelo Xharbour
Enviado:
11 Jan 2018 08:15
por alaminojunior
Alguém conseguiu afinal desvendar o mistério do objeto "SEND" não existir no CDO.Message?
TRY
oMsg:= CREATEOBJECT ( "CDO.Message" )
WITH OBJECT oMsg
oMsg:MDNRequested = .T.
oMsg:Configuration = oCfg
oMsg:From = cFrom
oMsg:To = aTo[i]
oMsg:CC = aCC
oMsg:BCC = aBCC
oMsg:Subject = cSubject
oMsg:Sender = cdpar000->fantasia
oMsg:ReplyTo = cFrom
oMsg:Organization = cdpar000->razao
if !uso
cMsg = strtran( cMsg, chr(13)+chr(10) , '<br>' )
oMsg:HTMLBody = "<h3>"+cMsg+"</h3>"
else
oMsg:TextBody = cMsg
endif
For x := 1 To Len( aFiles )
oMsg:AddAttachment(AllTrim(aFiles[x]))
Next
IF vEMAIL_CONF
oMsg:Fields("urn:schemas:mailheader:disposition-notification-to"):Value:= cFrom
oMsg:Fields("urn:schemas:mailheader:return-receipt-to"):Value:= cFrom
ENDIF
oMsg:Fields:update()
oMsg:Send()
END WITH
Email pelo Xharbour
Enviado:
11 Jan 2018 11:47
por rochinha
Amiguinhos,
shark
O CDO é bem antigo e vinha automaticamente implantado nos Windows antes da versão 7. Após isto a CDOSYS.DLL até vem, mas depende de instalação, manual ou automatica pelo Programas e Recursos no que se refere a Rede e Exchange.
Procure por *cdo* na pasta System32 ou SYSWOW64 e registre na unha. Lembrando de estar no prompt com direitos Administrador.
Direitos de Administrador não é o mesmo que usar o usuário Administrador. Algumas instalações do Windows escondem o verdadeiro administrador. Para encontrá-lo:
net user administrador /active:yes
ou
net user administrator /active:yes
Email pelo Xharbour
Enviado:
14 Jan 2018 00:41
por Shark
Rochinha Amiguinho...
Seguindo o conceito de sua orientação: devo deduzir que para utilizar o método de envio de email usando "CDO" terei que intervir em cada máquina/windows de meus clientes? Pelo que entendi é mais ou menos isso que sugere. Confirma?
Email pelo Xharbour
Enviado:
14 Jan 2018 01:43
por rochinha
Amiguinhos,
sharkCom certeza, pois se o
cdosys.dll, mesmo existindo não estiver registrado o recurso não funcionará. Lembrando que a Microsoft desligou alguns recursos que ficam presentes na instalação mas inativos sendo ativados após configurações nos recursos da máquina.
Digite
cdosys.dll windows 7 download no Google e veja os cinco primeiros resultados. Te levam para baixar a .DLL correspondente ao S.O outros podem te levar a baixar "Fixers" que na verdade mentem que falta uma ou outra coisa e fazer voce baixar um programa que não faz nada e te dá prejuízo.
https://www.dll4free.com[url=http://www.dlldownloader.com/cdosys-dll/]http://www.dlldownloader.com[/urlhttps://pt.dll-files.comhttp://originaldll.comApós baixar passe o Antivirus nos arquivos e copie para a pasta
System32 e registre-os. Entre no seu aplicativo e veja se funciona.
Eu também baixei mas não tenho prvisão de quando farei o teste.
Email pelo Xharbour
Enviado:
14 Jan 2018 03:01
por Shark
Amigão... (Rochinha)
Visto que esta intervenção profunda no windows dos usuários de nossos softwares não é tecnologicamente digna (apesar de possível), qual seria a melhor solução, afinal, para tratar email´s por nós programadores do moribundo, mas, persistente clipper word? Confesso que estou profundamente indignado com essa limitação considerando tratamento de emails uma técnica extremamente retrograda. Diga lá irmão... Como saltar essa barreira?
Email pelo Xharbour
Enviado:
14 Jan 2018 08:02
por alaminojunior
Sem querer duvidar do nosso amiguinho Rochinha, não tenho tido reclamação sobre isso por parte dos clientes.
E temos sistema instalados em várias versões de Windows: XP, Seven, 8, 10 ...
Email pelo Xharbour
Enviado:
15 Jan 2018 09:21
por Daniel
Acho que voce esta usando o comando WITH errado
WITH OBJECT oMsg
:MDNRequested = .T.
:Configuration = oCfg
:From = cFrom
:To = aTo[i]
:CC = aCC
:BCC = aBCC
:Subject = cSubject
:Sender = cdpar000->fantasia
:ReplyTo = cFrom
:Organization = cdpar000->razao
if !uso
cMsg = strtran( cMsg, chr(13)+chr(10) , '<br>' )
:HTMLBody = "<h3>"+cMsg+"</h3>"
else
:TextBody = cMsg
endif
For x := 1 To Len( aFiles )
:AddAttachment(AllTrim(aFiles[x]))
Next
IF vEMAIL_CONF
:Fields("urn:schemas:mailheader:disposition-notification-to"):Value:= cFrom
:Fields("urn:schemas:mailheader:return-receipt-to"):Value:= cFrom
ENDIF
:Fields:update()
:Send()
END WITH
Email pelo Xharbour
Enviado:
15 Jan 2018 09:54
por alaminojunior
Daniel, pode até ser, mas tem funcionado assim há uns 10 anos.
Poderia apontar o que achou estranho ?
Obrigado !
Email pelo Xharbour
Enviado:
15 Jan 2018 10:07
por JoséQuintas
TÁ TUDO ERRADO!!!!!
Começou dizendo que foi a mesma mensagem de erro do post.
O ponto principal é: QUAL FOI A MENSAGEM DE ERRO?
Muito provavelmente é uma questão já muito falada no fórum, que dependendo da LIB gráfica o XHarbour funciona de um jeito.
OLE é o uso de recursos existentes no Windows, usando um tipo de ligação entre o programa e o recurso do Windows.
No Harbour isso é feito usando win_OleCreateObject().
No XHarbour depende da LIB gráfica, pode ser CreateObject(), TOleAuto(), xhb_CreateObject(), ou outra coisa diferente que inventaram.
O erro não é na linha da função, o erro é na hora do uso do OLE, dependendo do que está sendo usado, geralmente no Send().
Email pelo Xharbour
Enviado:
15 Jan 2018 10:38
por alaminojunior
No XHarbour depende da LIB gráfica, pode ser CreateObject(), TOleAuto(), xhb_CreateObject(), ou outra coisa diferente que inventaram.
O erro não é na linha da função, o erro é na hora do uso do OLE, dependendo do que está sendo usado, geralmente no Send().
Na HwGui salvo engano meu (pois já procurei) não existe equivalente, e com isso assumo que está usando a que vem nos fontes do xHarbour.
E minhas rotinas de e-mail tem funcionado normalmente.
Email pelo Xharbour
Enviado:
15 Jan 2018 11:19
por JoséQuintas
Acho que voce esta usando o comando WITH errado
Daniel, o WITH OBJECT até está inútil, mas funciona mesmo assim.
Volto ao que postei:
QUAL A MENSAGEM DE ERRO?
Email pelo Xharbour
Enviado:
15 Jan 2018 11:39
por Daniel
Quintas
A minha observação seria só sobre o WITH Objeto mesmo
que com ele ou sem funciona do mesmo jeito
Email pelo Xharbour
Enviado:
15 Jan 2018 21:14
por Shark
Tenho tentado usar estes códigos para enviar email mas recebo este erro:
Error description: Error CDO.Message/3 DISP_E_MEMBERNOTFOUND: SEND
Stack Calls
===========
Called from: => TOLEAUTO:SEND( 0 )
Called from: GMAIL.prg => MAIN( 27 )
Email pelo Xharbour
Enviado:
15 Jan 2018 22:11
por alaminojunior
Provedores como Gmail, Yahoo entre outros, exigem que você ative no painel de controle da sua conta o recurso de fazer login a partir de aplicativos menos seguros.
Faça isso.
Email pelo Xharbour
Enviado:
16 Jan 2018 22:32
por rochinha
Amiguinhos,
Editei meu post várias vezes e ainda deixei erros.
Vamos lá:
alaminojuniorSe você usa o objeto
CDO para o envio dos emails a contento isso é boa notícia.
sharkEu coloquei em meu sistemas vários motores de envio, alguns já ficaram obsoletos, mas a codificação ficou lá. Não deu ainda para podar e deixar um único.
Eu uso o
blat.exe via command line(quando o prompt permite), mas algumas vezes uso a
blat.dll via
OLE.
O problema do Blat é que no caso do Gmail, o servidor SMTP necessita autenticação via SSL na porta 465 ou 587 como podem ver na página de ajuda do Google. Por isso utilizamos o programa, também grátis chamado Stunnel que ajuda o Blat a encaminhar o email de forma segura utilizando SSL na porta smtp do Gmail.
Para ele funcionar é necessário instalar o
stunnel(
https://www.stunnel.org/?page=downloads). Mas como você falou, tem de mexer nas entranhas do pc do usuário.
Outro dia encontrei o
SwithMail.exe. Se digitar no
Google dá pra encontrar já que não gravei o site.
Linha de comando:
SwithMail.exe /s /b corpo.txt /a "C:\SISTEMA\REMESSA\NFE110110*.ZIP" /Server smtp.gmail.com /ssl /p 587 /to irochinha@hotmail.com.br /sub "Arquivos da Nota Fiscal Eletronica - Carta de Correcao" /from meuemail@gmail.com /name meuemail@gmail.com /pass minhasenha$321
Se você digitar somente
SwithMail.exe uma tela de configuração aparecerá e poderá ser feita a configuração e salva em XML.
A partir daí poderá ser chamado via linha de comando. Procure por exemplos.
Email pelo Xharbour
Enviado:
16 Jan 2018 23:39
por Shark
Dei uma lida nas especificações do SwithMail e no que ele se propõem a fazer Rochinha.
Caso não consiga efetivamente usar funções nativas e códigos xharbour para a tarefa, vou apelar pra esse programa externo aí mesmo.
O que me causa estranheza, é uma funcionalidade tão básica como enviar um simples email, demonstrar-se inexplicavelmente assim: tão complexa e anti funcional.
Acho que deveria existir uma função tipo SendMail( cFrom, cText, aFiles )
Apenas isso enviaria a porcaria do email. Como? usando uma conta default provida pela linguagem. Tipo: se o programador não informar o email, usa-se essa conta default e o email chega no destino assim mesmo.
É uma pena isso não existir.
Me pego a imaginar: se pra enviar um email é essa novela todo, como será receber?
Email pelo Xharbour
Enviado:
17 Jan 2018 08:46
por JoséQuintas
Error description: Error CDO.Message/3 DISP_E_MEMBERNOTFOUND: SEND
Isso significa que não existe Send() no objeto que foi criado.
Possibilidades:
- Escreveu o nome errado no CreateObject()
- Não existe o recurso no Windows
- Equivalente a win_OleCreateObject() que foi usado não funciona como deveria
Por enquanto não tem nada a ver com porta 587, comunicação segura, etc.
Tem a ver com não funcionar/existir CDO na variável.
Email pelo Xharbour
Enviado:
17 Jan 2018 08:51
por JoséQuintas
Exemplo do que mencionei:
x := CreateObject( "algo que nao existe" )
x:Send()
Provavelmente isso vai gerar o mesmo erro, porque não existe o objeto indicado.
Email pelo Xharbour
Enviado:
17 Jan 2018 09:30
por alaminojunior
Ele ainda não respondeu se já ativou o login em aplicativos menos seguros no painel do Gmail.
Se não fizer essa configuração, vai retornar esse mesmo erro.
Digo por experiência própria.
Email pelo Xharbour
Enviado:
17 Jan 2018 11:47
por rochinha
Amiguinhos,
Me pego a imaginar: se pra enviar um email é essa novela todo, como será receber?
Receber, nunca consegui.
alaminojuniorEntendo que se fosse problema de habilitar algo lá fora, o erro se daria pelo retorno de email do GMail confirmando a impossiblidade. Ao que parece o erro é pela não existência do método no objeto sendo usado.
Email pelo Xharbour
Enviado:
17 Jan 2018 13:39
por JoséQuintas
Novamente.
Tá tudo errado, não existe fonte pra analisar, apenas menciona sobre Send() não funcionar.
Novamente: não tem a ver com GMAIL, PORTA, WITH, nada...
Outro exemplo prático:
Email pelo Xharbour
Enviado:
17 Jan 2018 13:43
por JoséQuintas
Usando a tranqueira original que vém com XHarbour:
Email pelo Xharbour
Enviado:
17 Jan 2018 13:46
por JoséQuintas
Usando outra tranqueira original do XHarbour, que dá no mesmo:
Email pelo Xharbour
Enviado:
17 Jan 2018 13:50
por JoséQuintas
Conclusão:
Se usar o que vém no XHarbour... não vai funcionar nunca.
Vai depender do que existir nas LIBs adicionais do XHarbour ou em LIB gráfica.
Email pelo Xharbour
Enviado:
17 Jan 2018 14:07
por alaminojunior
Acabo de testar usando as minhas tranqueiras do xHarbour, que diga-se de passagem, tem sustentado a empresa e a família há anos.
Cada dia mais orgulhoso dessa tranqueira véia !!!
A rotina que o colega me enviou por e-mail para análise, funciona !
Enviei o e-mail e simplesmente chegou.
Detalhe que havia passado despercebido antes:
os parâmetros aCC e aBCC se estiverem vazios, ou comente-os ou deixe-os em branco ''. Se passar {} ocorre o erro;
Feito esse ajuste, o e-mail foi enviado.
Lembrando sempre a ativação de login em aplicativos menos seguros precisa estar ativada no painel do Gmail.
Email pelo Xharbour
Enviado:
17 Jan 2018 14:26
por JoséQuintas
Ou provavelmente a rotina que enviaram por email tem uma função substituta pro CreateObject()
Se for com o CreateObject() do XHarbour, significa que ele funciona diferente de tudo que existe.
No Visual Basic 6, mesma mensagem do Harbour.
Email pelo Xharbour
Enviado:
17 Jan 2018 14:36
por alaminojunior
Ou provavelmente a rotina que enviaram por email tem uma função substituta pro CreateObject()
Não, está pura e simples somente com as chamadas para CreateObject. Utilizei a minha que está no pacote do xHarbour (win32ole.prg).
Inclusive agora até mandei com cópia para ele.
Calma Quintas, não há nada de errado com a CreateObject do xHarbour.
Email pelo Xharbour
Enviado:
17 Jan 2018 14:42
por Kapiaba
Eu também uso as "tranqueiras" do xHarbour, e não troco por nada. Funciona de 1000 maravilhosas. Mas nem por isso, vou menosprezar o harbour.
Abs
Email pelo Xharbour
Enviado:
17 Jan 2018 14:50
por JoséQuintas
Estou me referindo apenas ao CreateObject() que vém no XHarbour.
Isso vém sendo discutido em vários tópicos, há algum tempo.
Email pelo Xharbour
Enviado:
17 Jan 2018 15:21
por Kapiaba
Mister Quintas mas é essa "tranqueira"(CREATEOBJECT) do xHarbour que eu uso, e funciona SHOW().
TRY
oCfg := CREATEOBJECT( "CDO.Configuration" )
WITH OBJECT oCfg:Fields
oCfg:Item( "http://schemas.microsoft.com/cdo/configuration/smtpserver" ):Value := cServSMTP // Servidor SMTP
oCfg:Item( "http://schemas.microsoft.com/cdo/configuration/smtpserverport" ):Value := nPort
oCfg:Item( "http://schemas.microsoft.com/cdo/configuration/sendusing" ):Value := 2 // Remote SMTP = 2, local = 1
oCfg:Item( "http://schemas.microsoft.com/cdo/configuration/smtpauthenticate" ):Value := lAut
oCfg:Item( "http://schemas.microsoft.com/cdo/configuration/smtpusessl" ):Value := lSSL // .F. Ou .T.
oCfg:Item( "http://schemas.microsoft.com/cdo/configuration/sendusername" ):Value := TRIM(cUser)
oCfg:Item( "http://schemas.microsoft.com/cdo/configuration/sendtls" ):Value = lTLS // Com office365, nao funciona nem a pau.
oCfg:Item( "http://schemas.microsoft.com/cdo/configuration/sendpassword" ):Value := TRIM(cPass)
oCfg:Item( "http://schemas.microsoft.com/cdo/configuration/smtpconnectiontimeout"):Value := 60 // timeout // era 30
oCfg:Update()
END WITH
lRet := .T.
CATCH oError
MsgInfo( "Não Foi Possível Enviar o E-Mail!" +CRLF+ ;
"Verifique o Remetente " +CRLF+ ;
"Verifique o Destinatário " +CRLF+ ;
"Error: " + Transform(oError:GenCode, nil) + ";" +CRLF+ ;
"SubC: " + Transform(oError:SubCode, nil) + ";" +CRLF+ ;
"OSCode: " + Transform(oError:OsCode, nil) + ";" +CRLF+ ;
"SubSystem: " + Transform(oError:SubSystem, nil) + ";" +CRLF+ ;
"Mensajem: " + oError:Description, "Atenção " )
END
Abs.
Email pelo Xharbour
Enviado:
17 Jan 2018 15:23
por JoséQuintas
Não é não.
Tem nas LIBs gráficas, e na fivewin também.
Email pelo Xharbour
Enviado:
17 Jan 2018 16:06
por JoséQuintas
Talvez a pergunta correta seja:
Usa CreateObject() no XHarbour, qual das CreateObject() ?
E esse foi o motivo de eu ter chamado o CreateObject() do Xharbour de tranqueira.
Com certeza, se estivesse ok, as LIBs já teriam removido isso delas há muito tempo.
Email pelo Xharbour
Enviado:
17 Jan 2018 16:09
por Kapiaba
Deixe pra lá Mister Quintas. Se entendi a dúvida do Usuário <Shark>, o problema é com gmai.com. Aqui, neste tópico, eu ensino como configurar.
http://fivewin.com.br/index.php?/topic/26829-erro-ao-enviar-e-mail-via-cdomessage-e-gmail/#comment-278073Abs.
Email pelo Xharbour
Enviado:
17 Jan 2018 16:20
por alaminojunior
o problema é com gmai.com. Aqui, neste tópico, eu ensino como configurar.
O problema do colega a princípio é com o tipo de parâmetro enviado. Por isso o objeto CDO.xxxx não é criado.
Parâmetros aCC e aBCC são esquisitos. Ao contrário do parâmetro de destinatário que aceita uma array com os endereços, estes dois aceitam somente um string com os endereços.
Eu também já havia alertado sobre a configuração do Gmail, que também ocorre com Yahoo e outros. Se não ativar, o e-mail não passa.
Email pelo Xharbour
Enviado:
17 Jan 2018 20:16
por JoséQuintas
Isso explica não funcionar gmail, mas acho que não explica a mensagem de erro.
A não ser que seja um "sub-erro", e retorna como se fosse erro na chamada principal, o que acho difícil.
Email pelo Xharbour
Enviado:
25 Abr 2018 22:34
por Shark
Agradeço a todos que participaram do tópico.
Resumo: o código utilizando CDO funciona muito bem. Entretanto, se passarmos parâmetros com espaços no inicio ou no final das strings, parâmetros vazios o qualquer parâmetro inválido dá esse erro DISP_E_MEMBER_NOTFOUND.
O tipo de mensagem de erro é que é inadequada e nos remete a pensar que é um erro de classe ou algo interno.
Enviar email já está resolvido!
Agora, Gostaria de aproveitar o tópico para saber se algum colega consegue receber e-mails via código e qual método utiliza.
Email pelo Xharbour
Enviado:
26 Abr 2018 19:27
por rochinha
Amiguinhos,
sharkEnviar email já está resolvido!
Como? pode mostrar o seu código e de preferência dizer qual versão de Windows você usa.
Gostaria de sugerir aos amigos que esquecessem o
CDO.Messaging pois é uma tecnologia que só se comporta bem em Windows Server 2003/2008 e com sorte no Windows Seven.
Eu tenho em meu sistema pelo menos 10 motores de envio de email, pois se um falhar ainda tenho 9, sendo eles executáveis externos, vbScript, Python, OCX e DLL.
Todos funcionavam a contento até que começaram a travar portas e exigir acesso a 995/587 e alguns dos meus motores não tinha estas definições.
sharkAgora, Gostaria de aproveitar o tópico para saber se algum colega consegue receber e-mails via código e qual método utiliza.
Sugiro abrir outro tópico para trabalharmos somente sobre o mesmo.
Email pelo Xharbour
Enviado:
20 Mai 2018 06:11
por Shark
Rochinha... Uso com CDO.MESSAGE e funciona bem no windowsxp, windows7 e windows10. Tenho máquinas com todas essas versões e em todas elas funcionam perfeitamente.
Segue o códígo:
*************************************************************************************************************************************
IF lShowMsg
aProgress[6]:SetText( "Criando variáveis de configurações..." )
aProgress[2]:SetPos(40)
SYSREFRESH()
ENDIF
TRY
oCfg := CREATEOBJECT( "CDO.Configuration" )
WITH OBJECT oCfg:Fields
:Item("http://schemas.microsoft.com/cdo/configuration/smtpserver"):Value:= cServ
:Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport"):Value:= nPort
:Item("http://schemas.microsoft.com/cdo/configuration/sendusing"):Value:= 2
:Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate"):Value:= nAut
:Item("http://schemas.microsoft.com/cdo/configuration/smtpusessl"):Value:= nSSL
:Item("http://schemas.microsoft.com/cdo/configuration/sendusername"):Value:= cUser
:Item("http://schemas.microsoft.com/cdo/configuration/sendpassword"):Value:= cPass
:Item("http://schemas.microsoft.com/cdo/configuration/smtpconnectiontimeout"):Value:= 60
:Update()
END WITH
CATCH oError
IF lShowMsg
Pc_UnProgress( aProgress )
Pc_Alert( "Não foi possível criar o EMAIL!" + CRLF + "Verifique configurações de e-mail" + CRLF + "Erro: " + IF( oError:Description = NIL, " ", oError:Description ) )
ENDIF
RETURN( .F. )
END
IF lShowMsg
aProgress[2]:SetPos(60)
aProgress[6]:SetText( "Criando email..." )
SYSREFRESH()
ENDIF
TRY
oMsg := CREATEOBJECT( "CDO.Message" )
WITH OBJECT oMsg
:MDNRequested := .T.
:Configuration := oCfg
:From := cFrom
:To := cTo
:Subject := cSubject
:Sender := cSender
:Replyto := cFrom
IF lHtml
:HTMLBody = "<h3>" + cBody + "</h3>"
ELSE
:TextBody := cBody
ENDIF
FOR nFor = 1 TO LEN( aFiles )
IF FILE( aFiles[ nFor ] )
IF lShowMsg
aProgress[2]:SetPos( 80 + nFor )
aProgress[6]:SetText( "Anexando arquivos..." )
SYSREFRESH()
ENDIF
:AddAttachment( aFiles[ nFor ] )
ENDIF
NEXT
:Fields:Update()
IF lShowMsg
aProgress[2]:SetPos( 100 + LEN( aFiles ) )
aProgress[6]:SetText( "Enviando E-MAIL..." )
SYSREFRESH()
ENDIF
SysWait(0.5)
:Send()
END WITH
CATCH oError
IF lShowMsg
Pc_UnProgress( aProgress )
Pc_Alert( "Erro no Envio de E-MAIL: " + CRLF + cSubject + CRLF + "Para: " + cTo + CRLF + "Erro: " + IF( oError:Description = NIL, " ", oError:Description ) )
ENDIF
RETURN( .F. )
END
IF lShowMsg
Pc_UnProgress( aProgress )
ENDIF
RETURN( .T. )
Email pelo Xharbour
Enviado:
21 Mai 2018 11:40
por pauloa1
Olá Shark!
Eu uso com sucesso Uso com CDO.MESSAGE. pra enviar email.
Só tenho um problema que não consegui resolver.
Se eu anexar um arquivo, o mesmo fica "bloqueado" pelo windows.
caso eu queira por exemplo, excluir logo após enviar o email, só se o usuário sair e entrar novamente na aplicação.
Pesquisei e não achei uma forma de fechar o CDO.MESSAGE, como existe no excel por exemplo.
Paulo
Email pelo Xharbour
Enviado:
21 Mai 2018 12:15
por Kapiaba
Tente assim:
oCfg := Nil
oMsg := Nil
Email pelo Xharbour
Enviado:
21 Mai 2018 15:28
por pauloa1
Já tentei isso também e não fecha.
Email pelo Xharbour
Enviado:
21 Mai 2018 15:54
por Kapiaba
Como você anexa? Veja se ajuda:
PUBLIC NewAnexo
cXml := cDirPleno + "\REMESSA\ENVIADAS\" + ALLTRIM( cChave ) + "nfe.xml"
cAnexoNfeCAN := cDirPleno + "\REMESSA\PROTOCOLOS\" + ALLTRIM( cChave ) + "-can.xml"
cAnexos := "C:\NFEPDF\NFE" + ALLTRIM( STR(NFECOD2) + ".PDF" )
cAnexoNfeCCe := cDirPleno + "\REMESSA\PROTOCOLOS\" + ALLTRIM( cChave ) + ;
"-CCe"+ALLTRIM(STR(nNumCCe))+".xml"
NewAnexo := { cXml, cAnexoNfeCAN, cAnexos, cAnexoNfeCCe } //-> Arquivo para anexar - Email direto
aFiles := { cXml, cAnexoNfeCAN, cAnexos, cAnexoNfeCCe } //-> Arquivo para anexar: Aqui e no windows live
FOR x := 1 To Len( NewAnexo ) // Anexos dos Email aqui
IF NewAnexo[x] <> NIL
oMsg:AddAttachment(ALLTRIM(NewAnexo[x]))
ENDIF
NEXT
Email pelo Xharbour
Enviado:
22 Mai 2018 20:09
por JoséQuintas
Tive um problema parecido hoje....
Os arquivos do site ficaram presos no FTP.
Só liberou depois que reiniciei o Windows 10.
O incrível: arquivos do site presos no Windows 10 !!!! não os arquivos locais.
É a Microsoft fazendo coisas que não deve, como sempre.
Se no site faz isso, local então.....
Talvez fazer estilo Windows: copia pra pasta TEMP, anexa na TEMP, e deixa por lá.... rs
Email pelo Xharbour
Enviado:
20 Set 2020 11:51
por rossine
Boa tarde,
Só tenho um problema que não consegui resolver.
Se eu anexar um arquivo, o mesmo fica "bloqueado" pelo windows.
Alguém conseguiu achar a solução deste problema ?
Obrigado,
Email pelo Xharbour
Enviado:
20 Set 2020 20:07
por rochinha
Amiguinhos,
CDO.Messaging já deve estar abandonado pela Microsoft. O problema de ficar com anexos presos é devido ao fato que o mesmo deva estar sendo uploaded e não termina.
Email pelo Xharbour
Enviado:
20 Set 2020 23:28
por alaminojunior
Boa noite !
Tenho usado envio de e-mail com essa CDO há muitos anos, e até hoje não percebi esse problema.
Email pelo Xharbour
Enviado:
21 Set 2020 11:20
por rossine
Bom dia,
Testei aqui novamente e o problema do arquivo ficar "bloqueado" só ocorre quando por algum motivo ocorre algum erro no envio do email e vai para o "catch". Quando ele é enviado corretamente, o arquivo em anexo não fica bloqueado.
try
oCfg := Win_OleCreateObject( "CDO.Configuration" )
with Object oCfg:Fields
:Item( cdoSMTPServer ):Value := alltrim( cMailServer )
:Item( cdoSMTPServerPort ):Value := nPort
:Item( cdoSendUsing ):Value := nSendOpt
if lAuth
:Item( cdoSMTPAuthenticate ):Value := 1
:Item( cdoSendUserName ):Value := alltrim( cUser )
:Item( cdoSendPassword ):Value := alltrim( cPass )
:Item( cdoSMTPUseSSL ):Value := .T.
endif
:Item( cdoSMTPConnectionTimeout ):Value := 30
:Update()
end with
oMsg := Win_OleCreateObject( "CDO.Message" )
with Object oMsg
:Configuration := oCfg
:From := Trim( cFrom )
:To := Trim( cTo )
:Subject := Trim( cSubject )
:HTMLBody := Trim( WIN_ANSITOOEM(cBody) )
if !empty( aAttach )
for nEle := 1 To Len( aAttach )
:AddAttachment( alltrim( aAttach[ nEle ] ) )
next
endif
if !Empty( cBCC )
:BCC := Trim( cBCC )
endif
:Send()
end with
catch oError
*****************************************************************************
********** Quando passa por aqui, o arquivo fica bloqueado ********
*****************************************************************************
cMsg := "Não consegui enviar email para [" + cTo + "]" + CRLF + CRLF + ;
"Erro CDO.: " + hb_valtoexp(win_oleErrorText()) + CRLF + ;
"Error....: " + hb_valtostr( oError:GenCode) + CRLF + ;
"SubC.....: " + hb_valtostr( oError:SubCode ) + CRLF + ;
"OSCode...: " + hb_valtostr( oError:OsCode ) + CRLF + ;
"SubSystem: " + hb_valtostr( oError:SubSystem ) + CRLF + ;
"Mensagem.: " + oError:Description + CRLF + ;
"Operação.: [" + hb_valtostr(oError:Operation) + "]" + CRLF + ;
"Argumento: [" + hb_valtostr(oError:Args) + "]" + CRLF + ;
alerta( cMsg )
end try
oCfg := NIL
oMsg := NIL
Email pelo Xharbour
Enviado:
21 Set 2020 13:53
por rochinha
Amiguinhos,
rossineTroque:
...
:Send()
...
Por:
...
? :Send()
...
Veja se mostra algum retorno.
Aumente o
timeout para 60 também
Email pelo Xharbour
Enviado:
21 Set 2020 14:59
por rossine
Olá Rochinha,
O Erro ocorre instantaneamente sem precisar do timetout, mesmo eu mudando para 60 , ocorre o erro.
Eu usei um "email" ficticio para teste e ocorre o erro abaixo:
Não consegui enviar email para [xsdfsdfsd]
Erro CDO.:
Error....: 1
SubC.....: 1007
OSCode...: -2147352567
SubSystem: WINOLE
Mensagem.: Pelo menos um destinatário é necessário, mas nenhum foi encontrado. (0x8004020C)
Operação.: [SEND]
Argumento: [NIL]
Eu até tentei desviuncular os arquivos anexados a mensagem, mas não resolveu:
try
...
catch oError
...
oMsg:Attachments:DeleteAll()
...
end try
oCfg := NIL
oMsg := NIL
...então acredito ter outro caminho para resolver isto ou deve ser algum bug mesmo da CDOSYS.
Obrigado,
Email pelo Xharbour
Enviado:
21 Set 2020 23:59
por alaminojunior
Rossine, por favor poderia nos dizer como você pega estes retornos ? Mais precisamente este referente a "Mensagem"
rossine escreveu:Olá Rochinha,
O Erro ocorre instantaneamente sem precisar do timetout, mesmo eu mudando para 60 , ocorre o erro.
Eu usei um "email" ficticio para teste e ocorre o erro abaixo:
Não consegui enviar email para [xsdfsdfsd]
Erro CDO.:
Error....: 1
SubC.....: 1007
OSCode...: -2147352567
SubSystem: WINOLE
Mensagem.: Pelo menos um destinatário é necessário, mas nenhum foi encontrado. (0x8004020C)
Operação.: [SEND]
Argumento: [NIL]
Eu até tentei desviuncular os arquivos anexados a mensagem, mas não resolveu:
try
...
catch oError
...
oMsg:Attachments:DeleteAll()
...
end try
oCfg := NIL
oMsg := NIL
...então acredito ter outro caminho para resolver isto ou deve ser algum bug mesmo da CDOSYS.
Obrigado,
Email pelo Xharbour
Enviado:
22 Set 2020 13:33
por rossine
Olá Junior
Eu faço assim:
try
...
catch oError
cMsg := "Não consegui enviar email para [" + cTo + "]" + CRLF + CRLF + ;
"Erro CDO.: " + win_oleErrorText() + CRLF + ;
"Error....: " + hb_valtostr( oError:GenCode) + CRLF + ;
"SubC.....: " + hb_valtostr( oError:SubCode ) + CRLF + ;
"OSCode...: " + hb_valtostr( oError:OsCode ) + CRLF + ;
"SubSystem: " + hb_valtostr( oError:SubSystem ) + CRLF + ;
"Mensagem.: " + oError:Description + CRLF + ;
"Operação.: [" + hb_valtostr(oError:Operation) + "]" + CRLF + ;
"Argumento: [" + hb_valtostr(oError:Args) + "]" + CRLF
lRet := .F.
end try
Email pelo Xharbour
Enviado:
22 Set 2020 14:00
por alaminojunior
Sim, também faço desta maneira com exceção de um ponto que não conhecia:
"Erro CDO.: " + win_oleErrorText()
// Essa eu não uso !
Pelo que percebi você recebe com
win_oleErorText() uma mensagem de texto com a causa do problema, correto ?
O máximo que consigo usando
oError:Description
é uma string que vem algo como DISP_MEMBERNOTFOUND ou algo assim.
Utilizo xHarbour 1.2.3
Obrigado !
Email pelo Xharbour
Enviado:
23 Set 2020 16:04
por rochinha
Amiguinhos,
rossine
Outra coisa. O erro ocorre de que forma? num lote de emails em sequencia, dá erro em todos ou apenas um específico? Verifique se tem caracteres estranhos(invisíveis), vírgulas, etc nos emails.
A variável cTo recebe apenas o email destinatário, ou estás passando algum array?
Eu não tenho como testar o componente pois meu Windows Seven é capado e dá erro ao tentar instalar componentes do sistema. E CDOSYS é um deles.
Email pelo Xharbour
Enviado:
24 Set 2020 16:36
por rossine
Boa tarde,
Verificando melhor minha rotina de envio de email, onde não era o foco da minha atenção em descobrir o problema, reparei que minha rotina abre o arquivo a ser enviado para testar se o arquivo está liberado para envio, assim:
function ENVIA_EMAIL( cFile, ... )
...
h := FOpen( cFile )
IF (h == -1)
RETURN .F.
endif
fclose( h ) // <<<<<<< Aqui não tinha esta linha ???????
...
lRet := SendCDOMail( cMailServer, cFrom, cTo, cSubject, cBody, cAttach, cBCC, cUser, cPass, nPort, cFile )
returen lRet
Reparem que eu me esqueci de fechar o arquivo, com isto gerou este problema do "Arquivo ficar travado" no HD. :(
Tenho quase certeza que devo ter pego este código em algum site e ter ajustado aqui para minhas necessidades, então fica a pergunta.
Será que o código já não estava bugado e eu não percebi esta falha ou acidentalmente apaguei esta linha (hehe) ?
Mas de todo caso, peço desculpa pelo "Falso Alarme" por este problema, e refiz os testes aqui e está funcionando corretamente :)
Agradeço ao Rochinha pelas dicas em tentar me ajudar :)
Email pelo Xharbour
Enviado:
25 Set 2020 17:36
por rochinha
Amiguinhos,
rossine
É pra isto que estamos aqui, para somar. Algumas vezes coisas assim nos tiram os poucos cabelos.