by jll-fwh » Sat Nov 06, 2010 8:06 pm
Hola Ruben:
CDOSYS tiene un parametro para el envio de adjuntos, el parametro es cAttach, pasale como parametro a mano la direccion de un archivo y veras como lo envia, en formato:
c:\carpeta\archivo.txt o tambien:
c:\archivos\archivo1.txt;c:\archivos\archivo2.txt
Respecto al BLAT te lo busco y te lo envio.
Sino te va bien, me dices tu e-amil y te envio el fuente PRG a tu cuenta.
No necesariamente tiene que tener tu cliente una cuenta gmail, puede ser cualquier servidor SMTP, yo solo lo he probado con gmail, pero no tiene porque dar problemas en otros. Voy a probar esta noche a cambiar la configuracion del programa y probare con SMTP de ono.com.
/*--------------------------------------------------------------------------------------------------------*/
STATIC Function FSendMail( cMailServer, cFrom, cTo, cSubject, cBody, cAttach, cBCC, cUser, cPass, nPort )
/*--------------------------------------------------------------------------------------------------------*/
// Funcion creada por Manuel Mercado en Febrero del 2009
Local oCfg, oMsg, oError, nEle, cToken, ;
aAttach := {}, ;
lAuth := ! Empty( cUser ) .and. ! Empty( cPass ), ;
nSendOpt := 2 // send using: 1 = pickup folder 2 = port
LOCAL lSendOk := .T.
Default nPort := 25, ;
cSubject := "", ;
cBody := ""
If "GMAIL.COM" $ Upper( cMailServer ) .and. ( Empty( cUser ) .or. Empty( cPass ) )
MsgStop( "Con GMail son requeridos nombre de usuario y contraseña", "Atención" )
Return Nil
EndIf
CursorWait()
nEle := 1
While ! Empty( cToken := StrToken( cAttach, nEle++, "," ) )
AAdd( aAttach, cToken )
EndDo
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
*:Item( cdoSMTPServer ):Value := ::cIp
*:Item( cdoSMTPServerPort ):Value := 587
*:Item( cdoSendUsing ):Value := 2 // cdoSendUsingPickup (1), cdoSendUsingPort (2), cdoSendUsingExchange (3)
*:Item( cdoSMTPAuthenticate ):Value := .T.
*:Item( cdoSMTPUseSSL ):Value := .F.
End
:Update()
End With
oMsg := CreateObject( "CDO.Message" )
With Object oMsg
:Configuration := oCfg
:From := Trim( cFrom )
:To := Trim( cTo )
:Subject := Trim( cSubject )
:TextBody := Trim( cBody )
For nEle := 1 To Len( aAttach )
:AddAttachment := AllTrim( aAttach[ nEle ] )
Next
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( .F. )
End Try
oCfg := Nil
oMsg := Nil
CursorArrow()
Return( .T. )