win_oleCreateObject y CDO

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

Moderador: Moderadores

Paredes01
Usuário Nível 2
Usuário Nível 2
Mensagens: 52
Registrado em: 20 Mai 2012 11:22
Localização: Mérida, Yucatán, México

win_oleCreateObject y CDO

Mensagem por Paredes01 »

Buenas tardes

Estoy migrando mi sistema de xharbour comercial a harbour
y he tenido dificultad con win_oleCreateObject y CDO para enviar correos.

Pero en harbour no logro hacer que funcione al cambiar a
win_oleCreateObject

despliega error de:

Error: 1
Subc: 1006
subsystem: WINOLE
Mensaje: Error de argumento


Cualquier sugerencia sera de mucha ayuda, saludos!!


Este procedimiento funciona bien en xharbour:

Código:

Código: Selecionar todos

Procedure CORREO(cParaquien, cConcopia, cMensaje, cRutaarchivo,cBody, lsta)
   Local loCfg, loMsg, oError, HTML
   Try
      loCfg := CreateObject("CDO.Configuration" )
      WITH OBJECT loCfg:Fields
         :Item( "http://schemas.microsoft.com/cdo/configuration/smtpserver"):Value        := "mail.demo.mx"
         :Item( "http://schemas.microsoft.com/cdo/configuration/smtpserverport"):Value    := 465
         :Item( "http://schemas.microsoft.com/cdo/configuration/sendusing"):Value         := 2
         :Item( "http://schemas.microsoft.com/cdo/configuration/smtpauthenticate" ):Value := .T.
         :Item( "http://schemas.microsoft.com/cdo/configuration/smtpusessl"):Value        := .T.
         :Item( "http://schemas.microsoft.com/cdo/configuration/sendusername"):Value      := "agentes@demo.mx"
         :Item( "http://schemas.microsoft.com/cdo/configuration/sendpassword"):Value      := "demodemo"
         :Update()
      END WITH

      loMsg := CreateObject("CDO.Message")
      WITH OBJECT loMsg
         :Configuration := loCfg
         :From          := "agentes@demo.mx"
         :To            := cParaquien    
         :Cc            := cConcopia
         :Subject       := cMensaje
         :TextBody      :=  cBody
         :AddAttachment := cRutaarchivo
         :Send()
      END WITH
      lsta := .t.
   Catch oError
      Alert( "No se pudo enviar el correo electrónico"        + ";" + ;
             "Error: "     + Transform(oError:GenCode, NIL)   + ";" + ;
             "SubC: "      + Transform(oError:SubCode, NIL)   + ";" + ;
             "OSCode: "    + Transform(oError:OsCode, NIL)    + ";" + ;
             "SubSystem: " + Transform(oError:SubSystem, NIL) + ";" + ;
             "Mensaje: "   + oError:Description )
      lsta := .f.
   End
Return
Editado pela última vez por JoséQuintas em 31 Jan 2025 20:13, em um total de 1 vez.
Razão: Mensagem editada para colocar a tag [ code ]<br>Veja como utilizar esta tag: http://www.pctoledo.com.br/forum/faq.php?mode=bbcode#f2r1
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

win_oleCreateObject y CDO

Mensagem por JoséQuintas »

Já passaram por aqui problemas, conforme a biblioteca, e também problema quando mistura xhb.hb, e Tole().
NÃO use CREATEOBJECT()
use win_OleCreateObject()
O fonte, à primeira vista, está correto.

De preferência, extraia as partes que interessam da biblioteca xhb, e não use xhb.hbc
Essa biblioteca é problemática.

Pode fazer o teste com o fonte separado do restante, pra comprovar se pode ser interferência de lib.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Paredes01
Usuário Nível 2
Usuário Nível 2
Mensagens: 52
Registrado em: 20 Mai 2012 11:22
Localização: Mérida, Yucatán, México

win_oleCreateObject y CDO

Mensagem por Paredes01 »

Maestro, Quintas
Gracias por responder

Precisamente ahí tengo el problema
cuando cambio a win_oleCreateObject

Saludos!!
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

win_oleCreateObject y CDO

Mensagem por JoséQuintas »

Seu maior problema é o TRY/CATCH porcaria

Código: Selecionar todos


PROCEDURE Main()

   SetMode(30,100)
   CLS

   Correo( "test@test.com", "", "x", "d:\temp\test.prg", "x", "z" )

   Inkey(0)

   RETURN

Procedure CORREO(cParaquien, cConcopia, cMensaje, cRutaarchivo,cBody, lsta)
   Local loCfg, loMsg //, oError, HTML
   //Try
      loCfg := win_OleCreateObject("CDO.Configuration" )
      WITH OBJECT loCfg:Fields
         :Item( "http://schemas.microsoft.com/cdo/configuration/smtpserver"):Value        := "mail.demo.mx"
         :Item( "http://schemas.microsoft.com/cdo/configuration/smtpserverport"):Value    := 465
         :Item( "http://schemas.microsoft.com/cdo/configuration/sendusing"):Value         := 2
         :Item( "http://schemas.microsoft.com/cdo/configuration/smtpauthenticate" ):Value := .T.
         :Item( "http://schemas.microsoft.com/cdo/configuration/smtpusessl"):Value        := .T.
         :Item( "http://schemas.microsoft.com/cdo/configuration/sendusername"):Value      := "agentes@demo.mx"
         :Item( "http://schemas.microsoft.com/cdo/configuration/sendpassword"):Value      := "demodemo"
         :Update()
      END WITH

      loMsg := win_OleCreateObject("CDO.Message")
      WITH OBJECT loMsg
         :Configuration := loCfg
         :From          := "agentes@demo.mx"
         :To            := cParaquien
         :Cc            := cConcopia
         :Subject       := cMensaje
         :TextBody      :=  cBody
         :AddAttachment := cRutaarchivo
         :Send()
      END WITH
      lsta := .t.
   //Catch oError
   //   Alert( "No se pudo enviar el correo electrónico"        + ";" + ;
   //          "Error: "     + Transform(oError:GenCode, NIL)   + ";" + ;
   //          "SubC: "      + Transform(oError:SubCode, NIL)   + ";" + ;
   //          "OSCode: "    + Transform(oError:OsCode, NIL)    + ";" + ;
   //          "SubSystem: " + Transform(oError:SubSystem, NIL) + ";" + ;
   //          "Mensaje: "   + oError:Description )
   //   lsta := .f.
   //End
Return
A sua mensagem de erro me confundiu.
Confundiu tanto, que não sei se o SEU ERRO é o que mencionei antes ou este do meu teste agora.
Faça seu próprio teste, retirando o tratamento de erro.
erro.png
erro.png (5.56 KiB) Exibido 3302 vezes
Aqui fica visível que o erro é em AddAttachment.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Paredes01
Usuário Nível 2
Usuário Nível 2
Mensagens: 52
Registrado em: 20 Mai 2012 11:22
Localização: Mérida, Yucatán, México

win_oleCreateObject y CDO

Mensagem por Paredes01 »

Enterado, Maestro Quintas
Hago mis pruebas y comento

Gracias!!
Avatar do usuário
Jairo Maia
Moderador
Moderador
Mensagens: 2785
Registrado em: 16 Ago 2010 13:46
Localização: Campinas-SP

win_oleCreateObject y CDO

Mensagem por Jairo Maia »

Olá Paredes,

1-Primeiro, concordo com o José, mude:

Código: Selecionar todos

loCfg := CreateObject("CDO.Configuration" )
por:
loCfg := win_OleCreateObject("CDO.Configuration" )
2-Realmente está errado o elemento :AddAttachment. :AddAttachment é uma função. Como funcionava em xHarbour não sei, mas o correto é:

Código: Selecionar todos

:AddAttachment( "Caminho_completo_do_arquivo.Ext" )
ou
:AddAttachment( "" )
Se preferir, use:

Código: Selecionar todos

For nFiles:=1 To Len( aRutaarchivo )

 :AddAttachment( AllTrim( aRutaarchivo[nFiles] ) )
 
Next
Lembrando que tem que enviar o caminho completo, mesmo que o arquivo esteja na mesma pasta...
Abraços, Jairo
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
Paredes01
Usuário Nível 2
Usuário Nível 2
Mensagens: 52
Registrado em: 20 Mai 2012 11:22
Localização: Mérida, Yucatán, México

win_oleCreateObject y CDO

Mensagem por Paredes01 »

Resuelto, gracias a sus comentarios y consejos

Lo único que cambie en el código fuente anexo fue:

CreateObject
cambio por
win_oleCreateObject

y

:AddAttachment:= cRutaarchivo
cambio por
:AddAttachment(cRutaarchivo)

Funcionando al 100%

Saludos y gracias !!
Responder