FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Envío de correo con CdoSys
Posts: 196
Joined: Fri May 15, 2009 01:25 AM
Envío de correo con CdoSys
Posted: Sun Dec 19, 2010 05:58 AM
Amigos del foro

Adapté un código que vi en un post de Manuel Mercado, el usa TsButton

Yo no he manejado esta clase por lo que la adpaté con un diálogo desde recursos

El problema es que puedo enviar el correo que aparece en la variable cAttach por defecto o puedo seleccionar con ON CHANGE, pero no puedo adjuntar más de un archivo por que me manda error.

Si alguien pudiera ayudarme

Saludos

Este es mi codigo
Code (fw): Select all Collapse
#include "FiveWin.ch"
#include "CdoSys.ch"


//---------------------------------------------------------------------------------------------//

Function Main()

   Local oDlg, aCtl[ 9 ], oBEnv, oBSal

   Local cMailServer := PadR( "smtp.prodigy.net.mx", 60 ), ;           // servidor de correo
         cFrom       := PadR( "juan_arroyo_t@prodigy.net.mx", 60 ), ;      // remitente
         cTo         := PadR( "juan_arroyo_t@prodigy.net.mx", 180 ), ; // destinatario (uno o varios separados con comas)
         cBCC        := PadR( "destinatarios@hotmail.com", 180 ), ; // copias ocultas a (uno o varios separados con comas)
         cAttach     := PadR( "c:\fwh\bitmaps\fivewin.bmp", 60 ), ;// archivo anexo (uno o varios separados con comas)
         cSubject    := Space( 60 ), ;                              // asunto
         cBody       := SPACE(500), ;                             // cuerpo del mensaje
         nPort       := 25, ;                                       // puerto usado por el servidor de correo
         cUser       := Space( 60 ), ;                              // nombre de usuario para autenticación
         cPass       := Space( 30 )                                 // contraseña para autenticación

   SET RESOURCES TO "correo.dll"
            
   DEFINE DIALOG oDlg RESOURCE "EnvCor"
      oDlg:lHelpIcon := .f.

   REDEFINE GET aCtl[ 1 ] VAR cMailServer ID 101 OF oDlg
      aCtl[ 1 ]:Disable()

   REDEFINE GET aCtl[ 2 ] VAR cFrom       ID 102 OF oDlg
      aCtl[ 2 ]:Disable()

   REDEFINE GET aCtl[ 3 ] VAR cTo         ID 103 OF oDlg ;
      UPDATE PICTURE "@K"

   REDEFINE GET aCtl[ 4 ] VAR cBCC        ID 104 OF oDlg ;
      UPDATE  PICTURE "@K"

   REDEFINE GET aCtl[ 5 ] VAR cAttach     ID 105 OF oDlg ;
      UPDATE  PICTURE "@K" ;
      ON CHANGE fAddAttach( aCtl[ 5 ] ) 

   REDEFINE GET aCtl[ 6 ] VAR cSubject    ID 106 OF oDlg ;
      UPDATE PICTURE "@K"
      
   REDEFINE GET aCtl[ 7 ] VAR cUser       ID 107 OF oDlg ;
      UPDATE PICTURE "@K"
   
   REDEFINE GET aCtl[ 8 ] VAR cPass       ID 108 OF oDlg ;
      UPDATE  PICTURE "@K"

   REDEFINE GET aCtl[ 9 ] VAR cBody       ID 110 OF oDlg ;
      UPDATE PICTURE "@!"
                  
   REDEFINE BUTTON oBEnv ID 111 OF oDlg ;
      ACTION fSendMail( cMailServer, cFrom, cTo, cSubject, cBody, cAttach, ;
                        cBCC, cUser, cPass, nPort )

   REDEFINE BUTTON oBSal ID 112 OF oDlg ;
      ACTION oDlg:End()

   ACTIVATE DIALOG oDlg CENTERED
      SET RESOURCES TO
      
Return Nil

//---------------------------------------------------------------------------------------------//

Function fSendMail( cMailServer, cFrom, cTo, cSubject, cBody, cAttach, cBCC, cUser, cPass, nPort )

   Local oCfg, oMsg, oError, ;
         lAuth    := ! Empty( cUser ) .and. ! Empty( cPass ), ;
         nSendOpt := 2   // send using: 1 = pickup folder  2 = port  3 = remote mail server

   Default nPort    := 25, ;
           cSubject := "", ;
           cBody    := ""

   CursorWait()

   Try
      oCfg := CreateObject( "CDO.Configuration" )

      With Object oCfg:Fields
         :Item( cdoSMTPServer ):Value     := Trim( cMailServer )
         :Item( cdoSMTPServerPort ):Value := nPort
         :Item( cdoSendUsing ):Value      := nSendOpt

         If lAuth
            :Item( cdoSMTPAuthenticate ):Value := 1
            :Item( cdoSendUserName ):Value     := Trim( cUser )
            :Item( cdoSendPassword ):Value     := Trim( cPass )
            :Item( cdoSMTPUseSSL ):Value := 1
         EndIf

         :Update()
      End With


      oMsg := CreateObject( "CDO.Message" )

      With Object oMsg
         :Configuration := oCfg
         :From          := Trim( cFrom )
         :To            := Trim( cTo )
         :Subject       := Trim( cSubject )
         :TextBody      := Trim( cBody )

         If ! Empty( cAttach )
            :AddAttachment := Trim( cAttach )
         EndIf

         If ! Empty( cBCC )
            :BCC := Trim( cBCC )
         EndIf

         :Send()
      End With

   Catch oError
      CursorArrow()
      MsgStop( "No se pudo enviar el mensaje" + CRLF  + "Error: " + cValToChar( oError:GenCode) + CRLF + ;
               "SubC: " + cValToChar( oError:SubCode ) + CRLF + "OSCode: " + cValToChar( oError:OsCode ) + CRLF + ;
               "SubSystem: " + cValToChar( oError:SubSystem ) + CRLF + "Mensaje: " + oError:Description )

      oCfg := Nil
      oMsg := Nil
      Return Nil
   End Try

   oCfg := Nil
   oMsg := Nil
   SndPlaySound( GetWinDir() + "\media\Tada.wav", 5 )
   CursorArrow()

Return Nil

//---------------------------------------------------------------------------------------------//

Static Function fAddAttach( oGet )

   Local cFile, ;
         cAttach := oGet:VarGet()

   cFile := cGetFile( "*.*", "Selecciona el archivo" )

   If ! Empty( cFile )
      cAttach := Lower( PadR( AllTrim( cAttach ) + ;
                        If( ! Empty( cAttach ), ",", "" ) + AllTrim( cFile ), 60 ) )
   EndIf

   oGet:cText( cAttach )

Return Nil
Juan Arroyo
México
FWH 7.12 VERCE 5.3 xHarbour 1.1.0
juan_arroyo_t@hotmail.com
Posts: 248
Joined: Wed Jan 11, 2006 11:30 AM
Re: Envío de correo con CdoSys
Posted: Thu Dec 23, 2010 03:56 PM

Ola Juan;

Mira este ejemplo aquí:

http://www.fivewin.com.br/exibedicas.asp?id=1039

Saluds, Ale

aleseribeli@hotmail.com

FwH, Hb Svn, ADS 8.1, ADS 10, Pelles C, FwPPC, MsVc 2008, MsVc 2010
"Conhecimento, você não subtrai quando divide; mas soma e multiplica."
**---Mário Persona---**
Posts: 196
Joined: Fri May 15, 2009 01:25 AM
Re: Envío de correo con CdoSys
Posted: Sat Dec 25, 2010 12:22 AM

Ale

Ya lo intenté con mis datos, pude compilar pero me dice que no ha sido posible enviar el mensaje

Gracias por tus atenciones

Saludos

Juan Arroyo
México
FWH 7.12 VERCE 5.3 xHarbour 1.1.0
juan_arroyo_t@hotmail.com
Posts: 422
Joined: Mon Aug 17, 2009 12:18 PM
Re: Envío de correo con CdoSys
Posted: Sat Dec 25, 2010 10:12 PM

Hola,

Por cada ajunto tienes que añadir una línea :AddAtachment = ("c:\fivewin.prg")

Feliz navidad

Saludos,



Eduardo

Continue the discussion