Volviendo al tema CDO
- Armando Picon
- Posts: 446
- Joined: Mon Dec 26, 2005 9:11 pm
- Location: Lima, Peru
Volviendo al tema CDO
Amigos
Tengo una pequeña traba, supongo que debe ser simple pero me está complicando. En varias aplicaciones he utilizado CDO para enviar correos y siguen funcionando en los equipos de los clientes. El caso es que, recientemente, para un cliente nuevo, he vuelto a querer dotarle al modulo de clientes esta funcionalidad. Compile y enlazé la aplicación y... no pasa nada. Estoy recibiendo una completa negación de ejecución de la aplicación.
Si lo compilo como una aplicación independiente de correo, cuando no me niega la ejecución el programa "casca" con un mensaje de "DISP_E_MEMBERNOTFOUND y no sé porqué. He comparado el codigo de las aplicaciones donde funciona y son iguales, salvo algunas modificaciones para adecuarlo a los requerimientos del nuevo programa.
Adicionalmente; el código original de CDOSYS que tuve, a partir de cuya adecuación hice el programa de correos, fue borrado de mi USB de trabajo.
Por otra parte he cambiado el desarrollo de aplicaciones a una Laptop con Window 7-64bits y es donde empecé a tener las dificultades. He intentado volver a compilar y enlazar en el equipo antiguo con XP SP3 y también obtengo la misma respuesta (o me niega ejecutar la aplicación o me dá el mensajito de marras)
Resumiendo. Estoy atascado y no le encuentro solución. Por esas cosas... ¿tiene alguién codigo que haya sido probado en Win 7-64bits, que enlaze y funcione sin trabas? De ser así, ¿pueden compartirlo conmigo? Se los agradeceré mucho.
Saludos y gracias por adelantado.
Armando
Nota. Mi correo es "apic1002002@yahoo.es"
Tengo una pequeña traba, supongo que debe ser simple pero me está complicando. En varias aplicaciones he utilizado CDO para enviar correos y siguen funcionando en los equipos de los clientes. El caso es que, recientemente, para un cliente nuevo, he vuelto a querer dotarle al modulo de clientes esta funcionalidad. Compile y enlazé la aplicación y... no pasa nada. Estoy recibiendo una completa negación de ejecución de la aplicación.
Si lo compilo como una aplicación independiente de correo, cuando no me niega la ejecución el programa "casca" con un mensaje de "DISP_E_MEMBERNOTFOUND y no sé porqué. He comparado el codigo de las aplicaciones donde funciona y son iguales, salvo algunas modificaciones para adecuarlo a los requerimientos del nuevo programa.
Adicionalmente; el código original de CDOSYS que tuve, a partir de cuya adecuación hice el programa de correos, fue borrado de mi USB de trabajo.
Por otra parte he cambiado el desarrollo de aplicaciones a una Laptop con Window 7-64bits y es donde empecé a tener las dificultades. He intentado volver a compilar y enlazar en el equipo antiguo con XP SP3 y también obtengo la misma respuesta (o me niega ejecutar la aplicación o me dá el mensajito de marras)
Resumiendo. Estoy atascado y no le encuentro solución. Por esas cosas... ¿tiene alguién codigo que haya sido probado en Win 7-64bits, que enlaze y funcione sin trabas? De ser así, ¿pueden compartirlo conmigo? Se los agradeceré mucho.
Saludos y gracias por adelantado.
Armando
Nota. Mi correo es "apic1002002@yahoo.es"
FWH + BCC582 + WorkShop 4.5 + Resource Hacker + Mingw
Mis nuevas herramientas
Comunicacion via WhatsApp (+51) 957549 665
Comunicación via Correo: apic1002002 at yahoo dot es; apic1002002@gmail.com
Mis nuevas herramientas
Comunicacion via WhatsApp (+51) 957549 665
Comunicación via Correo: apic1002002 at yahoo dot es; apic1002002@gmail.com
Re: Volviendo al tema CDO
Hola armando:
Pon tu codigo y veremos donde tienes el problema, yo uso CDO para el envio de emails con WIN7 64bits sin problemas.
El problema no vendra de FWH ni SO, creo que tu problema estara en que en algun sitio tendras alguna variable inicializada diferente o en su defecto que las cuentas necesitan identificarse en el servidor.
Si quieres probar algo para saber por donde van los tiros, crea una cuenta GMAIL, y que la salida del SMTP sea smtp.gmail.com puerto 465, y luego lo pruebas en los distintos equipos, asi sabremos si el problema viene de ahi o de codigo.
P.D Cuando tenga un hueco quiero cambiar la gestion de correo a las clases/funciones de harbour a ver si funcionan mejor y no hay problemas a la hora de actualizar FWH. De momento a ver si podemos ayudarte sobre CDO.
Si quieres esta semana terminare las modificaciones que crean los e-mails con formato RTF y lo envia en formato HTML, te la envio por si te interesa.
Un saludo
JLL
Pon tu codigo y veremos donde tienes el problema, yo uso CDO para el envio de emails con WIN7 64bits sin problemas.
El problema no vendra de FWH ni SO, creo que tu problema estara en que en algun sitio tendras alguna variable inicializada diferente o en su defecto que las cuentas necesitan identificarse en el servidor.
Si quieres probar algo para saber por donde van los tiros, crea una cuenta GMAIL, y que la salida del SMTP sea smtp.gmail.com puerto 465, y luego lo pruebas en los distintos equipos, asi sabremos si el problema viene de ahi o de codigo.
P.D Cuando tenga un hueco quiero cambiar la gestion de correo a las clases/funciones de harbour a ver si funcionan mejor y no hay problemas a la hora de actualizar FWH. De momento a ver si podemos ayudarte sobre CDO.
Si quieres esta semana terminare las modificaciones que crean los e-mails con formato RTF y lo envia en formato HTML, te la envio por si te interesa.
Un saludo
JLL
Libreria: FWH/FWH1109 + Harbour 5.8.2 + Borland C++ 5.8.2
Editor de Recursos: PellecC
ADA, OURXDBU
S.O: XP / Win 7 /Win10
Blog: http://javierlloris.blogspot.com.es/
e-mail: javierllorisprogramador@gmail.com
Editor de Recursos: PellecC
ADA, OURXDBU
S.O: XP / Win 7 /Win10
Blog: http://javierlloris.blogspot.com.es/
e-mail: javierllorisprogramador@gmail.com
- Armando Picon
- Posts: 446
- Joined: Mon Dec 26, 2005 9:11 pm
- Location: Lima, Peru
Re: Volviendo al tema CDO
JLL
Encantado de recibir tu apoyo. Este CDO se esta poniendo "canija". Funciona normalmente lo que hice anteriormente para clientes pero el mismo codigo ahora "nada de nada". Como alguna vez afirmé "cosa de informática".
Saludos
Armando
Nota. Tengo cuenta de gmail, de yahoo y de hotmail. A todos ellos accedo desde linux mediante un cliente de correo y por eso conozco todas las coordenadas de acceso para SMTP y para POP.
Encantado de recibir tu apoyo. Este CDO se esta poniendo "canija". Funciona normalmente lo que hice anteriormente para clientes pero el mismo codigo ahora "nada de nada". Como alguna vez afirmé "cosa de informática".
Saludos
Armando
Nota. Tengo cuenta de gmail, de yahoo y de hotmail. A todos ellos accedo desde linux mediante un cliente de correo y por eso conozco todas las coordenadas de acceso para SMTP y para POP.
FWH + BCC582 + WorkShop 4.5 + Resource Hacker + Mingw
Mis nuevas herramientas
Comunicacion via WhatsApp (+51) 957549 665
Comunicación via Correo: apic1002002 at yahoo dot es; apic1002002@gmail.com
Mis nuevas herramientas
Comunicacion via WhatsApp (+51) 957549 665
Comunicación via Correo: apic1002002 at yahoo dot es; apic1002002@gmail.com
Re: Volviendo al tema CDO
Publica la parte de código que crea el objeto CDO a ver si vemos algo diferente.
un saludo
JLL
un saludo
JLL
Libreria: FWH/FWH1109 + Harbour 5.8.2 + Borland C++ 5.8.2
Editor de Recursos: PellecC
ADA, OURXDBU
S.O: XP / Win 7 /Win10
Blog: http://javierlloris.blogspot.com.es/
e-mail: javierllorisprogramador@gmail.com
Editor de Recursos: PellecC
ADA, OURXDBU
S.O: XP / Win 7 /Win10
Blog: http://javierlloris.blogspot.com.es/
e-mail: javierllorisprogramador@gmail.com
- Armando Picon
- Posts: 446
- Joined: Mon Dec 26, 2005 9:11 pm
- Location: Lima, Peru
Re: Volviendo al tema CDO
JLL
Aqui va el codigo que viene funcionando en clientes y que ahora no puedo hacerlo funcionar:
Este es el contenido del RC
Aqui va el codigo que viene funcionando en clientes y que ahora no puedo hacerlo funcionar:
Code: Select all | Expand
#include "FiveWin.ch"
#include "CdoSys.ch"
*#include "FGet.ch"
#include "Fileio.ch"
#define WS_3DLOOK 4
#define CLR_HBROWN nRGB( 205, 192, 176 )
#define CLR_NBLUE nRGB( 142, 171, 194 )
*
STATIC oDlg, oFont, oFont2
STATIC cMailServer,; //:= PadR( "smtp.gmail.com", 60 ), ; // servidor de correo
cFrom ,; //:= PadR( "remitente@gmail.com", 60 ), ; // remitente
nPort ,; //:= 465, ; // puerto usado por el servidor de correo
cUser ,; //:= Space( 60 ), ; // nombre de usuario para autenticación
cPass //:= Space( 30 ) // contraseña para autenticación
STATIC nLine := 1
//--------------------------------------------------------------------------------------------------------------------//
*Function fEmail(cMailServer, cFrom, cnPort, cUser, cPass )
Function fEmail(cTo) // Recibe como parámetro el correo electrónico del cliente
*local hBorland := LoadLibrary("SgemBW32.DLL")
Local oDlg, oFont, oFont2, oFont3
Local oGet1, oGet2, oGet3, oGet4, oGet5
Local oBt1, oBt2, oBt3
Local cnPort:=25
Local cNombre:= ""
local cBcc := SPACE(600),;
cSubject:=SPACE(120),;
cAttach:=SPACE(600),;
cBody :=SPACE(800)
*
IF cto == NIL
cTo := PadR( cTo, 180 )
ELSE
cNombre := SayGetClien() // forma parte de mis librerias
cTo := PadR( "_destinatarios@hotmail.com", 180 )
ENDIF
*
IF !FILE( "emailCdo.ini" )
CreaIni()
ENDIF
*
ReadIni() // proporciona los valores static
*
INI oIni FILENAME ( "./emailCdo.ini" )
GET cMailServer SECTION 'SETUPMAIL' ENTRY 'MailServer' OF oIni
GET nPort SECTION 'SETUPMAIL' ENTRY 'puerto' OF oIni
GET cuser SECTION 'SETUPMAIL' ENTRY 'usuario' OF oIni
GET cpass SECTION 'SETUPMAIL' ENTRY 'password' OF oIni
GET cFrom SECTION 'SETUPMAIL' ENTRY 'remitente' OF oIni
ENDINI
DEFINE FONT oFont NAME "Arial" SIZE 0, -16
DEFINE FONT oFont2 NAME "Arial" SIZE 0, -10
DEFINE FONT oFont3 NAME "Arial" SIZE 0, -14
nPort := cnPort
DEFINE DIALOG oDlg RESOURCE "Email" ;
COLORS CLR_BLUE, CLR_LIGHTGRAY /*;
STYLE nOR( DS_MODALFRAME, WS_POPUP, WS_CAPTION, WS_SYSMENU, WS_3DLOOK )*/
oDlg:lHelpIcon := .F.
oDlg:cCaption := "Mensaje Electrónco para - "+cNombre
oDlg:bKeydown := {|nKey| if( nKey == VK_F12 , ;
(SetupMail(cMailServer, nPort, cUser, cPass, cFrom), ;
oDlg:Setfocus()), Nil) }
REDEFINE GET oGet1 VAR cTo OF oDlg ; // Destinatario
ID 101 ;
FONT oFont2 UPDATE PICTURE "@KS60" ;
COLORS CLR_BLUE, CLR_WHITE //SIZE 264, 11 PIXEL
REDEFINE GET oGet2 VAR cBCC OF oDlg ; // con copia a
ID 102 ;
FONT oFont2 UPDATE PICTURE "@KS60" ;
COLORS CLR_BLUE, CLR_WHITE //SIZE 264, 11 PIXEL
REDEFINE GET oGet3 VAR cSubject OF oDlg ; // Asunto
ID 103 ;
FONT oFont2 UPDATE PICTURE "@KS60" ;
COLORS CLR_BLUE, CLR_WHITE
REDEFINE GET oGet4 VAR cAttach OF oDlg ; // anexos
PICTURE "@KS60" ;
ID 104 ;
FONT oFont2 UPDATE ;
COLORS CLR_BLUE, CLR_WHITE // ACTION fAddAttach( aCtl[ 12 ] ) ; // descomentar para FWH 8.12 o posterior
REDEFINE GET oGet5 VAR cBody OF oDlg ; // cuerpo del mensaje
MEMO ;
ID 105 ;
FONT oFont3 ;
UPDATE ;
COLORS CLR_BLUE, CLR_WHITE
oGet5:bKeydown := { |KeyStroke| IIF( KeyStroke==VK_RETURN, ;
(oGet5:cText(cBody+=CRLF),;
oGet5:GoBottom()),;
oGet5:Paste(KeyStroke) ) }
REDEFINE BTNBMP oBt1 ID 108 ;
RESOURCE "Attach" ;
OF oDlg ; // buscar anexos
ACTION fAddAttach( oGet4 )
REDEFINE BTNBMP oBt2 ID 106 ; // enviar el mensaje
OF oDlg ;
RESOURCE "SendMail" ;
FONT oFont2 ;
ACTION ( fSendMail( cTo, cBCC, cSubject, cBody, cAttach ),;
oGet5:cText(cBody:=SPACE(800)),;
oGet5:Setfocus(),;
oGet5:refresh(), oBt2:refresh() )
REDEFINE BUTTON oBt3 ID 2 ;
OF oDlg ; // Salir sin hacer nada
FONT oFont2 ;
ACTION oDlg:End()
ACTIVATE DIALOG oDlg CENTERED //;
//VALID ( .T. )
oFont:End()
oFont2:End()
oFont3:End()
* FreeLibrary(hBorland)
Return Nil
*******************************************************************************
*DLL32 FUNCTION BWCCRegister( hInst AS LONG ) AS WORD PASCAL LIB "SgemBW32.DLL"
*******************************************************************************
//---------------------------------------------------------------------------------------------//
Function fSendMail( cTo, cBCC, cSubject, cBody, cAttach )
Local oCfg, oMsg, oError, nEle, cToken, ;
aAttach := {}, ;
lAuth := IIF(! Empty( cUser ) .and. ! Empty( cPass ), .T., .F.) ,;
nSendOpt := 2 // send using: 1 = pickup folder 2 = port
Default cSubject := "Text de correo con CDO", ;
cBody := "Test de prueba de correo con CDO"
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 := 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 := 1
EndIf
:Update()
End With
oMsg := CreateObject( "CDO.Message" )
With Object oMsg
:Configuration := oCfg
:From := allTrim( cFrom )
:To := allTrim( cTo )
:Subject := allTrim( cSubject )
:TextBody := allTrim( 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 Nil
End Try
oCfg := Nil
oMsg := Nil
SndPlaySound( GetWinDir() + "\media\Tada.wav", 0 )
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 ), 180 ) )
EndIf
oGet:cText( cAttach )
Return Nil
********************************************************************************
Static Function SetupMail()
LOCAL oDlg, oBt1, oBt2
Local oGet1, oGet2, oGet3, oGet4, oGet5
local oIni
local lOk := .F.
*
local cxMailServer:=ALLTRIM(cMailServer)+REPLICATE(" ",60-LEN(ALLTRIM(cMailServer)))
local nxPort:=nPort
local cxUser:=ALLTRIM(cUser)+REPLICATE(" ",60-LEN(ALLTRIM(cUser)))
local cxPass:=ALLTRIM(cPass)+REPLICATE(" ",30-LEN(ALLTRIM(cPass)))
local cxFrom:=ALLTRIM(cFrom)+REPLICATE(" ",60-LEN(ALLTRIM(cFrom)))
*
DEFINE DIALOG oDlg RESOURCE "EmailSetup"
REDEFINE GET oGet1 VAR cxMailServer ID 101 OF oDlg
REDEFINE GET oGet2 VAR nxPort ID 102 OF oDlg PICTURE "9999"
REDEFINE GET oGet3 VAR cxUser ID 103 OF oDlg
REDEFINE GET oGet4 VAR cxPass ID 104 OF oDlg
REDEFINE GET oGet5 VAR cxFrom ID 105 OF oDlg
REDEFINE BUTTON oBt1 ID 1 OF oDlg ACTION (lOk := .T., oDlg:end() )
REDEFINE BUTTON oBt2 ID 2 OF oDlg ACTION oDlg:end()
ACTIVATE DIALOG oDlg CENTERED
IF lOk
cMailServer :=ALLTRIM(cxMailServer)
nPort :=nxPort
cUser :=ALLTRIM(cxUser)
cPass :=ALLTRIM(cxPass)
cFrom :=ALLTRIM(cxFrom)
*
WriteIni() // escribe los nuevos valores al archivo INI
*
ENDIF
RETURN NIL
procedure AppSys // Xbase++ requirement
return
Static FUNCTION CreaIni()
*
nFileHandle := FCreate( "email.ini", FC_NORMAL )
cText := "[SETUPMAIL]"+CRLF+;
"MailServer = "+"smtp.gmail.com"+CRLF+;
"remitente = "+"apic1002002@gmail.com"+CRLF+;
"puerto = "+"465"+CRLF+;
"usuario = "+"apic1002002@gmail.com"+CRLF+;
"password = "+"miclave"+CRLF // aqui va mi clave en el servidor de gmail
FWrite( nFileHandle, cText )
FClose( nFileHandle )
*
RETURN NIL
STATIC FUNCTION ReadIni()
local oIni
INI oIni FILENAME ( "./emailCdo.ini" )
GET cMailServer SECTION 'SETUPMAIL' ENTRY 'MailServer' OF oIni
GET cFrom SECTION 'SETUPMAIL' ENTRY 'remitente' OF oIni
GET nPort SECTION 'SETUPMAIL' ENTRY 'puerto' OF oIni
GET cuser SECTION 'SETUPMAIL' ENTRY 'usuario' OF oIni
GET cpass SECTION 'SETUPMAIL' ENTRY 'password' OF oIni
ENDINI
RETURN NIL
Static FUNCTION WriteIni()
local oIni
INI oIni FILENAME ( "./emailCdo.ini" )
SET SECTION "SETUPMAIL" ENTRY 'MailServer' TO cMailServer OF oIni
SET SECTION "SETUPMAIL" ENTRY 'remitente' TO cFrom OF oIni
SET SECTION "SETUPMAIL" ENTRY 'puerto' TO nPort OF oIni
SET SECTION "SETUPMAIL" ENTRY 'usuario' TO cUser OF oIni
SET SECTION "SETUPMAIL" ENTRY 'password' TO cpass OF oIni
ENDINI
Return nil
***********************************
Este es el contenido del RC
Code: Select all | Expand
// Add this to your resources RC file
//#ifdef __FLAT
// 1 24 "WindowsXP.Manifest"
//#endif
//#ifdef __64__
// 1 24 "WindowsXP.Manifest64"
//#endif
//Emailm16 BITMAP "Emailm16.bmp"
//Exitm16 BITMAP "Exitm16.bmp"
SendMail BITMAP "./images/sendmail.bmp"
Attach BITMAP "./images/zoom.bmp"
Font BITMAP "./bmp/font.bmp"
Bold BITMAP "./bmp/Bold.bmp"
Italic BITMAP "./bmp/Italic.bmp"
Underline BITMAP "./bmp/Under.bmp"
Color BITMAP "./bmp/Color.bmp"
Left BITMAP "./bmp/Left.bmp"
Centro BITMAP "./bmp/Center.bmp"
Right BITMAP "./bmp/Right.bmp"
eMail DIALOG 33, 11, 368, 375
STYLE WS_OVERLAPPED | WS_VISIBLE | WS_CAPTION | WS_THICKFRAME
FONT 8, "MS Sans Serif"
{
LTEXT "Destinatario", -1, 17, 14, 43, 8
LTEXT "C/Copia a:", -1, 17, 30, 43, 8
LTEXT "Asunto", -1, 17, 43, 43, 8
LTEXT "Adj/Archivo", -1, 17, 57, 43, 8
EDITTEXT 101, 61, 13, 288, 12
EDITTEXT 102, 61, 27, 288, 12
EDITTEXT 103, 61, 41, 288, 12
EDITTEXT 104, 61, 55, 271, 12
EDITTEXT 105, 17, 79, 333, 245, ES_MULTILINE | WS_BORDER | WS_TABSTOP
CONTROL "", 106, "BorBtn", BS_PUSHBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 20, 341, 37,
25
CONTROL "Button", 2, "BorBtn", BS_PUSHBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 310, 341,
37, 25
GROUPBOX " Mensaje", 107, 12, 69, 343, 260, BS_GROUPBOX
PUSHBUTTON "", 108, 333, 55, 17, 14
}
setup DIALOG 35, 26, 368, 169
STYLE WS_OVERLAPPED | WS_VISIBLE | WS_CAPTION
CAPTION "Parametros de Conexión"
FONT 8, "MS Sans Serif"
{
LTEXT "Servidor SMTP", -1, 10, 14, 50, 8
LTEXT "Puerto SMTP", -1, 16, 30, 44, 8
LTEXT "Usuario", -1, 33, 51, 27, 8
LTEXT "Clave Acceso", -1, 14, 65, 46, 8
LTEXT "Remitente", -1, 25, 93, 35, 8
EDITTEXT 101, 61, 13, 288, 12
CONTROL "1234", 102, "EDIT", WS_BORDER | WS_TABSTOP, 61, 27, 23, 12
EDITTEXT 103, 61, 49, 288, 12
EDITTEXT 104, 61, 63, 288, 12
EDITTEXT 105, 61, 91, 288, 12
CONTROL "", 1, "BorBtn", BS_PUSHBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 20, 123, 37, 25
CONTROL "", 2, "BorBtn", BS_PUSHBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 310, 123, 37, 25
}
FWH + BCC582 + WorkShop 4.5 + Resource Hacker + Mingw
Mis nuevas herramientas
Comunicacion via WhatsApp (+51) 957549 665
Comunicación via Correo: apic1002002 at yahoo dot es; apic1002002@gmail.com
Mis nuevas herramientas
Comunicacion via WhatsApp (+51) 957549 665
Comunicación via Correo: apic1002002 at yahoo dot es; apic1002002@gmail.com
Re: Volviendo al tema CDO
Dear Mr.Armando,
I made some modifications to your code. Please try this code. Tested here with my Gmail A/c and is working fine.
Regards
Anser
I made some modifications to your code. Please try this code. Tested here with my Gmail A/c and is working fine.
Code: Select all | Expand
#include "FiveWin.ch"
*#include "CdoSys.ch"
*#include "FGet.ch"
#include "Fileio.ch"
#define WS_3DLOOK 4
#define CLR_HBROWN nRGB( 205, 192, 176 )
#define CLR_NBLUE nRGB( 142, 171, 194 )
*
STATIC oDlg, oFont, oFont2
STATIC cMailServer,; //:= PadR( "smtp.gmail.com", 60 ), ; // servidor de correo
cFrom ,; //:= PadR( "remitente@gmail.com", 60 ), ; // remitente
nPort ,; //:= 465, ; // puerto usado por el servidor de correo
cUser ,; //:= Space( 60 ), ; // nombre de usuario para autenticación
cPass //:= Space( 30 ) // contraseña para autenticación
STATIC nLine := 1
//--------------------------------------------------------------------------------------------------------------------//
*Function fEmail(cMailServer, cFrom, cnPort, cUser, cPass )
Function fEmail(cTo) // Recibe como parámetro el correo electrónico del cliente
*local hBorland := LoadLibrary("SgemBW32.DLL")
Local oDlg, oFont, oFont2, oFont3
Local oGet1, oGet2, oGet3, oGet4, oGet5
Local oBt1, oBt2, oBt3
Local cnPort:=25
Local cNombre:= ""
local cBcc := SPACE(600),;
cSubject:=SPACE(120),;
cAttach:=SPACE(600),;
cBody :=SPACE(800)
Local hIniFile
*
cTo:=Space(80)
IF cto == NIL
cTo := PadR( cTo, 180 )
ELSE
* cNombre := SayGetClien() // forma parte de mis librerias
cTo := PadR( "xxxxxx@xxsssss.com", 180 )
ENDIF
*
IF !FILE( "emailCdo.ini" )
CreaIni()
ENDIF
/*
*
ReadIni() // proporciona los valores static
*
INI oIni FILENAME ( "emailcdo.ini" )
GET cMailServer SECTION 'SETUPMAIL' ENTRY 'MailServer' OF oIni
GET nPort SECTION 'SETUPMAIL' ENTRY 'puerto' OF oIni
GET cuser SECTION 'SETUPMAIL' ENTRY 'usuario' OF oIni
GET cpass SECTION 'SETUPMAIL' ENTRY 'password' OF oIni
GET cFrom SECTION 'SETUPMAIL' ENTRY 'remitente' OF oIni
ENDINI
*/
hIniFile := HB_ReadIni( "emailcdo.ini" )
cMailServer :=hIniFile["SETUPMAIL"]["MailServer"]
nPort :=hIniFile["SETUPMAIL"]["puerto"]
cuser :=hIniFile["SETUPMAIL"]["usuario"]
cpass :=hIniFile["SETUPMAIL"]["password"]
cFrom :=hIniFile["SETUPMAIL"]["remitente"]
DEFINE FONT oFont NAME "Arial" SIZE 0, -16
DEFINE FONT oFont2 NAME "Arial" SIZE 0, -10
DEFINE FONT oFont3 NAME "Arial" SIZE 0, -14
nPort := cnPort
DEFINE DIALOG oDlg RESOURCE "Email" ;
COLORS CLR_BLUE, CLR_LIGHTGRAY /*;
STYLE nOR( DS_MODALFRAME, WS_POPUP, WS_CAPTION, WS_SYSMENU, WS_3DLOOK )*/
oDlg:lHelpIcon := .F.
oDlg:cCaption := "Mensaje Electrónco para - " // +cNombre
oDlg:bKeydown := {|nKey| if( nKey == VK_F12 , ;
(SetupMail(cMailServer, nPort, cUser, cPass, cFrom), ;
oDlg:Setfocus()), Nil) }
REDEFINE GET oGet1 VAR cTo OF oDlg ; // Destinatario
ID 101 ;
FONT oFont2 UPDATE PICTURE "@KS60" ;
COLORS CLR_BLUE, CLR_WHITE //SIZE 264, 11 PIXEL
REDEFINE GET oGet2 VAR cBCC OF oDlg ; // con copia a
ID 102 ;
FONT oFont2 UPDATE PICTURE "@KS60" ;
COLORS CLR_BLUE, CLR_WHITE //SIZE 264, 11 PIXEL
REDEFINE GET oGet3 VAR cSubject OF oDlg ; // Asunto
ID 103 ;
FONT oFont2 UPDATE PICTURE "@KS60" ;
COLORS CLR_BLUE, CLR_WHITE
REDEFINE GET oGet4 VAR cAttach OF oDlg ; // anexos
PICTURE "@KS60" ;
ID 104 ;
FONT oFont2 UPDATE ;
COLORS CLR_BLUE, CLR_WHITE // ACTION fAddAttach( aCtl[ 12 ] ) ; // descomentar para FWH 8.12 o posterior
REDEFINE GET oGet5 VAR cBody OF oDlg ; // cuerpo del mensaje
MEMO ;
ID 105 ;
FONT oFont3 ;
UPDATE ;
COLORS CLR_BLUE, CLR_WHITE
oGet5:bKeydown := { |KeyStroke| IIF( KeyStroke==VK_RETURN, ;
(oGet5:cText(cBody+=CRLF),;
oGet5:GoBottom()),;
oGet5:Paste(KeyStroke) ) }
REDEFINE BTNBMP oBt1 ID 108 ;
OF oDlg ; // buscar anexos
ACTION fAddAttach( oGet4 )
REDEFINE BTNBMP oBt2 ID 106 ; // enviar el mensaje
OF oDlg ;
FONT oFont2 ;
ACTION ( fSendMail( cTo, cBCC, cSubject, cBody, cAttach ),;
oGet5:cText(cBody:=SPACE(800)),;
oGet5:Setfocus(),;
oGet5:refresh(), oBt2:refresh() )
REDEFINE BUTTON oBt3 ID 2 ;
OF oDlg ; // Salir sin hacer nada
FONT oFont2 ;
ACTION oDlg:End()
ACTIVATE DIALOG oDlg CENTERED //;
//VALID ( .T. )
oFont:End()
oFont2:End()
oFont3:End()
* FreeLibrary(hBorland)
Return Nil
*******************************************************************************
*DLL32 FUNCTION BWCCRegister( hInst AS LONG ) AS WORD PASCAL LIB "SgemBW32.DLL"
*******************************************************************************
//---------------------------------------------------------------------------------------------//
Function fSendMail( cTo, cBCC, cSubject, cBody, cAttach )
Local oCfg, oMsg, oError, nEle, cToken, ;
aAttach := {}, ;
lAuth := IIF(! Empty( cUser ) .and. ! Empty( cPass ), .T., .F.) ,;
nSendOpt := 2 // send using: 1 = pickup folder 2 = port
Default cSubject := "Text de correo con CDO", ;
cBody := "Test de prueba de correo con CDO"
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( "http://schemas.microsoft.com/cdo/configuration/smtpserver" ):Value := allTrim( cMailServer )
:Item( "http://schemas.microsoft.com/cdo/configuration/smtpserverport" ):Value := nPort
:Item( "http://schemas.microsoft.com/cdo/configuration/sendusing" ):Value := nSendOpt // Remote SMTP = 2, local = 1
/*
:Item( cdoSMTPServer ):Value := allTrim( cMailServer )
:Item( cdoSMTPServerPort ):Value := nPort
:Item( cdoSendUsing ):Value := nSendOpt
*/
MsgInfo(cMailServer+CRLF+str(nPort)+CRLF+Str(nSendOpt))
If lAuth
: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 := allTrim( cUser )
:Item( "http://schemas.microsoft.com/cdo/configuration/sendpassword" ):Value := allTrim( cPass )
:Item( "http://schemas.microsoft.com/cdo/configuration/smtpconnectiontimeout"):Value := 30
/*
:Item( cdoSMTPAuthenticate ):Value := .T. // 1
:Item( cdoSendUserName ):Value := allTrim( cUser )
:Item( cdoSendPassword ):Value := allTrim( cPass )
:Item( cdoSMTPUseSSL ):Value := .T. // 1
:Item( smtpconnectiontimeout ):Value := 30
*/
EndIf
:Update()
End With
oMsg := CreateObject( "CDO.Message" )
With Object oMsg
:Configuration := oCfg
:From := allTrim( cFrom )
:To := allTrim( cTo )
:Subject := allTrim( cSubject )
:TextBody := allTrim( cBody )
MsgInfo(cFrom+CRLF+cTo+CRLF+cSubject+CRLF+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( "Could not send the message" + CRLF + "Error: " + cValToChar( oError:GenCode) + CRLF + ;
"SubC: " + cValToChar( oError:SubCode ) + CRLF + "OSCode: " + cValToChar( oError:OsCode ) + CRLF + ;
"SubSystem: " + cValToChar( oError:SubSystem ) + CRLF + "Message: " + oError:Description )
oCfg := Nil
oMsg := Nil
Return Nil
End Try
MsgInfo("Email Send successfully")
oCfg := Nil
oMsg := Nil
SndPlaySound( GetWinDir() + "\media\Tada.wav", 0 )
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 ), 180 ) )
EndIf
oGet:cText( cAttach )
Return Nil
********************************************************************************
Static Function SetupMail()
LOCAL oDlg, oBt1, oBt2
Local oGet1, oGet2, oGet3, oGet4, oGet5
local oIni
local lOk := .F.
*
local cxMailServer:=ALLTRIM(cMailServer)+REPLICATE(" ",60-LEN(ALLTRIM(cMailServer)))
local nxPort:=nPort
local cxUser:=ALLTRIM(cUser)+REPLICATE(" ",60-LEN(ALLTRIM(cUser)))
local cxPass:=ALLTRIM(cPass)+REPLICATE(" ",30-LEN(ALLTRIM(cPass)))
local cxFrom:=ALLTRIM(cFrom)+REPLICATE(" ",60-LEN(ALLTRIM(cFrom)))
*
DEFINE DIALOG oDlg RESOURCE "EmailSetup"
REDEFINE GET oGet1 VAR cxMailServer ID 101 OF oDlg
REDEFINE GET oGet2 VAR nxPort ID 102 OF oDlg PICTURE "9999"
REDEFINE GET oGet3 VAR cxUser ID 103 OF oDlg
REDEFINE GET oGet4 VAR cxPass ID 104 OF oDlg
REDEFINE GET oGet5 VAR cxFrom ID 105 OF oDlg
REDEFINE BUTTON oBt1 ID 1 OF oDlg ACTION (lOk := .T., oDlg:end() )
REDEFINE BUTTON oBt2 ID 2 OF oDlg ACTION oDlg:end()
ACTIVATE DIALOG oDlg CENTERED
IF lOk
cMailServer :=ALLTRIM(cxMailServer)
nPort :=nxPort
cUser :=ALLTRIM(cxUser)
cPass :=ALLTRIM(cxPass)
cFrom :=ALLTRIM(cxFrom)
*
WriteIni() // escribe los nuevos valores al archivo INI
*
ENDIF
RETURN NIL
procedure AppSys // Xbase++ requirement
return
Static FUNCTION CreaIni()
*
nFileHandle := FCreate( "email.ini", FC_NORMAL )
cText := "[SETUPMAIL]"+CRLF+;
"MailServer = "+"smtp.gmail.com"+CRLF+;
"remitente = "+"apic1002002@gmail.com"+CRLF+;
"puerto = "+"465"+CRLF+;
"usuario = "+"apic1002002@gmail.com"+CRLF+;
"password = "+"miclave"+CRLF // aqui va mi clave en el servidor de gmail
FWrite( nFileHandle, cText )
FClose( nFileHandle )
*
RETURN NIL
STATIC FUNCTION ReadIni()
local oIni
INI oIni FILENAME ( "./emailCdo.ini" )
GET cMailServer SECTION 'SETUPMAIL' ENTRY 'MailServer' OF oIni
GET cFrom SECTION 'SETUPMAIL' ENTRY 'remitente' OF oIni
GET nPort SECTION 'SETUPMAIL' ENTRY 'puerto' OF oIni
GET cuser SECTION 'SETUPMAIL' ENTRY 'usuario' OF oIni
GET cpass SECTION 'SETUPMAIL' ENTRY 'password' OF oIni
ENDINI
RETURN NIL
Static FUNCTION WriteIni()
local oIni
INI oIni FILENAME ( "./emailCdo.ini" )
SET SECTION "SETUPMAIL" ENTRY 'MailServer' TO cMailServer OF oIni
SET SECTION "SETUPMAIL" ENTRY 'remitente' TO cFrom OF oIni
SET SECTION "SETUPMAIL" ENTRY 'puerto' TO nPort OF oIni
SET SECTION "SETUPMAIL" ENTRY 'usuario' TO cUser OF oIni
SET SECTION "SETUPMAIL" ENTRY 'password' TO cpass OF oIni
ENDINI
Return nil
***********************************
Regards
Anser
Re: Volviendo al tema CDO
Hola armando:
No he podido probar eso todavía, sino funciona bien la solución de anserkk, dilo y te paso la función de HB_Sendmail() que envía emails con harbour.
Un saludo
JLL
No he podido probar eso todavía, sino funciona bien la solución de anserkk, dilo y te paso la función de HB_Sendmail() que envía emails con harbour.
Un saludo
JLL
Libreria: FWH/FWH1109 + Harbour 5.8.2 + Borland C++ 5.8.2
Editor de Recursos: PellecC
ADA, OURXDBU
S.O: XP / Win 7 /Win10
Blog: http://javierlloris.blogspot.com.es/
e-mail: javierllorisprogramador@gmail.com
Editor de Recursos: PellecC
ADA, OURXDBU
S.O: XP / Win 7 /Win10
Blog: http://javierlloris.blogspot.com.es/
e-mail: javierllorisprogramador@gmail.com
- albeiroval
- Posts: 386
- Joined: Tue Oct 16, 2007 5:51 pm
- Location: Barquisimeto - Venezuela
Re: Volviendo al tema CDO
Hola JLL,
me gustaria probar el envio de mail con harbour,
gracias,
saludos,
albeiro
me gustaria probar el envio de mail con harbour,
gracias,
saludos,
albeiro
- Armando Picon
- Posts: 446
- Joined: Mon Dec 26, 2005 9:11 pm
- Location: Lima, Peru
Re: Volviendo al tema CDO
JLL
Voy a probar el código de Anserkk. Respecto a lo que me indicas... ¿el código tuyo se apoya en librerías de microsoft? La pregunta que hago es porque a raíz de esta última experiencia he tenido que goglear y he visto que el CDOSYS tiene versiones que varían de acuerdo al sistema operativo (de win98Se, de Win2000, de WinXP, de Vista y finalmente de Win 7 -32 y 64bits). Me disgusta mucho esa situación y me ha colmado la paciencia.
La idea que tengo es que deberíamos, en Harbour o xHarbour, no depender de esta situación por lo que si logramos que nuestra clases se independicen de la versión del sistema operativo las perspectivas para los miembros del foro y de los vayan a utilizar estas opciones libres se verán incrementadas exponencialmente.
Visto esto, me agradaría que me remitieras el código que tienes, siempre y cuando no se apoye en Microsoft, como es el caso de CDO.
Saludos
Armando
Voy a probar el código de Anserkk. Respecto a lo que me indicas... ¿el código tuyo se apoya en librerías de microsoft? La pregunta que hago es porque a raíz de esta última experiencia he tenido que goglear y he visto que el CDOSYS tiene versiones que varían de acuerdo al sistema operativo (de win98Se, de Win2000, de WinXP, de Vista y finalmente de Win 7 -32 y 64bits). Me disgusta mucho esa situación y me ha colmado la paciencia.
La idea que tengo es que deberíamos, en Harbour o xHarbour, no depender de esta situación por lo que si logramos que nuestra clases se independicen de la versión del sistema operativo las perspectivas para los miembros del foro y de los vayan a utilizar estas opciones libres se verán incrementadas exponencialmente.
Visto esto, me agradaría que me remitieras el código que tienes, siempre y cuando no se apoye en Microsoft, como es el caso de CDO.
Saludos
Armando
FWH + BCC582 + WorkShop 4.5 + Resource Hacker + Mingw
Mis nuevas herramientas
Comunicacion via WhatsApp (+51) 957549 665
Comunicación via Correo: apic1002002 at yahoo dot es; apic1002002@gmail.com
Mis nuevas herramientas
Comunicacion via WhatsApp (+51) 957549 665
Comunicación via Correo: apic1002002 at yahoo dot es; apic1002002@gmail.com
Re: Volviendo al tema CDO
Hola Armando:
Por lo poco que he visto de las clases/Funciones de harbour es totalmente transparente al SO.
A mi me pasa lo mismo que a ti respecto al tema de las telecomunicaciones con FW, este ya es el 3 programa que tengo que adaptar para el envío y recepción de emails, por eso he decido buscar otra opción. Creo que con las clases/Funciones de harbour funcionara todo perfecto.
Creare un pequeño programa para este fin y lo publicare para que se pruebe con todos los S.O posibles a ver si encontramos una solución valida generalizada.
La función de envío ( SMTP ) ya esta clara, ahora estoy haciendo pruebas para poder recibir los correos ( POP3/POP), ya recibo y guardo los ficheros adjuntos recibidos, de momento solo he apreciado ahora mismo que los únicos que no se reciben correctamente son los MAPA DE BITS, todo lo demás es recibido OK, ya lo mirare mañana a ver que tontería es.
P.D Es una lastima que alguna gente del foro no sea tan generosa como otros que lo son mucho, porque por lo que veo últimamente siempre responden a las preguntas +- los mismo, pero en cambio a aquellos que le han solucionado un problema no aportan sus conocimientos a los demás.
Por ejemplo, seguro que en el caso que hablamos de las clases/funciones de harbour hay gente que ya tiene aplicado todo esto de enviar y recibir correo, pero en cambio no publica ningún comentario para que los demás veamos el sol detrás de las nubes mas pronto... en fin, cada persona es un mundo.
P.D Si te urge el tema de enviar correos, agregame al MSN y te explico, sino una vez termine las pruebas y cree la base del programa lo publicare en el foro.
Un saludo
JLL
MSN: fwh-jll@hotmail.es
Por lo poco que he visto de las clases/Funciones de harbour es totalmente transparente al SO.
A mi me pasa lo mismo que a ti respecto al tema de las telecomunicaciones con FW, este ya es el 3 programa que tengo que adaptar para el envío y recepción de emails, por eso he decido buscar otra opción. Creo que con las clases/Funciones de harbour funcionara todo perfecto.
Creare un pequeño programa para este fin y lo publicare para que se pruebe con todos los S.O posibles a ver si encontramos una solución valida generalizada.
La función de envío ( SMTP ) ya esta clara, ahora estoy haciendo pruebas para poder recibir los correos ( POP3/POP), ya recibo y guardo los ficheros adjuntos recibidos, de momento solo he apreciado ahora mismo que los únicos que no se reciben correctamente son los MAPA DE BITS, todo lo demás es recibido OK, ya lo mirare mañana a ver que tontería es.
P.D Es una lastima que alguna gente del foro no sea tan generosa como otros que lo son mucho, porque por lo que veo últimamente siempre responden a las preguntas +- los mismo, pero en cambio a aquellos que le han solucionado un problema no aportan sus conocimientos a los demás.
Por ejemplo, seguro que en el caso que hablamos de las clases/funciones de harbour hay gente que ya tiene aplicado todo esto de enviar y recibir correo, pero en cambio no publica ningún comentario para que los demás veamos el sol detrás de las nubes mas pronto... en fin, cada persona es un mundo.
P.D Si te urge el tema de enviar correos, agregame al MSN y te explico, sino una vez termine las pruebas y cree la base del programa lo publicare en el foro.
Un saludo
JLL
MSN: fwh-jll@hotmail.es
Libreria: FWH/FWH1109 + Harbour 5.8.2 + Borland C++ 5.8.2
Editor de Recursos: PellecC
ADA, OURXDBU
S.O: XP / Win 7 /Win10
Blog: http://javierlloris.blogspot.com.es/
e-mail: javierllorisprogramador@gmail.com
Editor de Recursos: PellecC
ADA, OURXDBU
S.O: XP / Win 7 /Win10
Blog: http://javierlloris.blogspot.com.es/
e-mail: javierllorisprogramador@gmail.com
Re: Volviendo al tema CDO
Con respecto al tema de CDOSYS les comento que he probado con todos los sistemas operativos Windows y no tiene problemas de compatibilidad
WinXP 32 y 64 Bits OK
Windows Vista 32 y 64 Bits OK
Windows 7 32 y 64 bits OK
Windows 8 Dev 32 y 64 Bits OK
Windows Server 2003 32 y 64 OK
Windows Server 2008 32 y 64 OK
cdosys es independiente de la version de FWH que uses.
Compiladores, Harbour 3.1 + BCC63 + xHarbour 1.2.1 y BCC58
Slds
WinXP 32 y 64 Bits OK
Windows Vista 32 y 64 Bits OK
Windows 7 32 y 64 bits OK
Windows 8 Dev 32 y 64 Bits OK
Windows Server 2003 32 y 64 OK
Windows Server 2008 32 y 64 OK
cdosys es independiente de la version de FWH que uses.
Compiladores, Harbour 3.1 + BCC63 + xHarbour 1.2.1 y BCC58
Slds
Nicanor Martinez M.
Auditoria y Sistemas Ltda.
MicroExpress Ltda.
FW + FWH + XHARBOUR + HARBOUR + PELLES C + XDEVSTUDIO + XEDIT + BCC + VC_X86 + VCC_X64 + MINGW + R&R Reports + FastReport + Tdolphin + ADO + MYSQL + MARIADB + ORACLE
nnicanor@yahoo.com
Auditoria y Sistemas Ltda.
MicroExpress Ltda.
FW + FWH + XHARBOUR + HARBOUR + PELLES C + XDEVSTUDIO + XEDIT + BCC + VC_X86 + VCC_X64 + MINGW + R&R Reports + FastReport + Tdolphin + ADO + MYSQL + MARIADB + ORACLE
nnicanor@yahoo.com
- carlos vargas
- Posts: 1723
- Joined: Tue Oct 11, 2005 5:01 pm
- Location: Nicaragua
Re: Volviendo al tema CDO
bueno compañeros de penurias y alegrias,
como alternativa, hay controles COM que permiten hacer envios de email, yo use dos hace algunos años con una app en foxpro, los cuales estoy seguro que funcionaran sin problemas con fwh.
bueden bajar los dll aca:
[url]
http://www.donboscocorp.com/carlos/rkmail.dll
http://www.donboscocorp.com/carlos/jmail.zip
[/url]
el jmail incluye el manual del control.
si busca en google encontraran las documentacion de dichos controles, asi como versiones mas actualizadas.
NOTA: recuerden registrar los controles con regsvr32 para que funcionen.

bueden bajar los dll aca:
[url]
http://www.donboscocorp.com/carlos/rkmail.dll
http://www.donboscocorp.com/carlos/jmail.zip
[/url]
el jmail incluye el manual del control.
si busca en google encontraran las documentacion de dichos controles, asi como versiones mas actualizadas.
NOTA: recuerden registrar los controles con regsvr32 para que funcionen.
Code: Select all | Expand
*creacion de variables locales
LOCAL oSMTP
LOCAL cTexto
LOCAL nRecord
*verifica si tabla no esta limpia
IF EOF()
MESSAGEBOX("No existen registros de llamadas a enviar por email!",0+16)
RETURN
ENDIF
*confirma eliminacion de registro de llamada
IF MESSAGEBOX("Desea enviar reporte de llamada por email?",4+32,"Seleccione") <> 6
RETURN
ENDIF
*guarda registro actual
nRecord = RECNO()
*crea objeto SMTP para envio de correo
oSMTP = CREATE('rkMail.SMTP')
*servidor SMTP de corporacion don bosco
oSMTP.AddSMTPHost("mail.cablenet.com.ni")
*datos del remitente
oSMTP.FromAddress = "recepcion@donboscocorp.com"
oSMTP.FromName = "Recepcion de Corporacion Don Bosco"
*asunto del correo
oSMTP.Subject = "Registro de llamadas del " + dtoc(thisform.fecha.Value)
*datos del receptor principal
oSMTP.AddRecipient ("Guillermo Castillo - Gerencia", "gccm@donboscocorp.com")
*datos de receptores secundarios del correo
oSMTP.AddBCC ("Margarita Rodriguez", "atencion-a-cliente@donboscocorp.com")
oSMTP.AddBCC ("Carlos Vargas", "cvargaz2005@donboscocorp.com")
*acumulacion de registro de llamdas
cTexto = ""
SCAN
cTexto = cTexto + "Hora...:" + tele->time + CHR(13)+;
"De.....:" + tele->from + CHR(13)+;
"Para...:" + tele->to + CHR(13)+;
"Mensaje:" + tele->message + CHR(13)+;
"Atendio:" + IIF(tele->in, "Si", "No" ) + CHR(13) + CHR(13)
ENDSCAN
*asignacion del cuerpo del correo
oSMTP.TextBody = cTexto
*adjunto atachment
*oSMTP.AddAttachment("fondo.bmp")
*verificacion de envio de correo
IF !oSMTP.SendMail
*error en envio
WAIT WINDOW TYPE("oSMTP.Response")
WAIT WINDOW oSMTP.Response
MESSAGEBOX(oSMTP.Response,0+16,"Error en envio de correo!")
ELSE
*envio exitoso
MESSAGEBOX("Envio de llamadas por correo exitoso!",0+48,"Informacion")
ENDIF
*elimina objeto
oSMTP = NULL
*restura posicion del puntero de la tabla
GOTO (nRecord )
*refresca formulario
thisform.Refresh
Code: Select all | Expand
*creacion de variables locales
LOCAL oSMTP
LOCAL cTexto
LOCAL nRecord
LOCAL cServerSMTP
*constante de fin de linea
#define CRLF Chr(13)+Chr(10)
#define TRUE .t.
#define FALSE .f.
*define nombre de servidor
*cServerSMTP = "mail.cablenet.com.ni"
cServerSMTP = "donboscocorp.com"
*verifica si tabla no esta limpia
IF EOF()
MESSAGEBOX("No existen registros de llamadas a enviar por email!",0+16)
RETURN
ENDIF
*confirma eliminacion de registro de llamada
IF MESSAGEBOX("Desea enviar reporte de llamada por email?",4+32,"Seleccione") <> 6
RETURN
ENDIF
*guarda registro actual
nRecord = RECNO()
*crea objeto SMTP para envio de correo
oSMTP = CREATE('jmail.Message')
WITH oSMTP
*permite manejar errores
.Silent = TRUE
.Logging = TRUE
*email del que envia el mensaje
.From = "recepcion1@donboscocorp.com"
.FromName = "Recepcion de Don Bosco Corp"
*destinatarios del mensaje
.AddRecipient( "cvargaz2005@donboscocorp.com", "Carlos Vargas" )
.AddRecipient( "recepcion2011@donboscocorp.com","Heidy Perez" )
.AddRecipient( "gcm2011@donboscocorp.com","Guillermo Castillo" )
*descripcion del mensaje
.Subject = "Registro de llamadas del " + dtoc(thisform.fecha.Value)
*procesa cada llamada
SCAN
*agrega un mensaje por cada registro
.AppendText ( "Hora...:" + tele->time + CRLF +;
"De.....:" + tele->from + CRLF +;
"Para...:" + tele->to + CRLF +;
"Mensaje:" + tele->message + CRLF +;
"Atendio:" + IIF(tele->in, "Si", "No" ) + CRLF +;
"---------------------------------------" + CRLF )
ENDSCAN
*nombre del servidor
.MailServerUserName = cServerSMTP
.MailServerPassword = ""
*verifica envio del mensaje
IF !.Send( cServerSMTP )
MESSAGEBOX( .log, 0+16, "Depuracion de error en envio" )
ELSE
MESSAGEBOX( "Lista de llamadas enviadas correctamente",0+48, "Envio correcto" )
ENDIF
ENDWITH
*elimina objeto
oSMTP = NULL
*restura posicion del puntero de la tabla
GOTO ( nRecord )
*refresca formulario
thisform.Refresh
Salu2
Carlos Vargas
Desde Managua, Nicaragua (CA)
Carlos Vargas
Desde Managua, Nicaragua (CA)
- Armando Picon
- Posts: 446
- Joined: Mon Dec 26, 2005 9:11 pm
- Location: Lima, Peru
Re: Volviendo al tema CDO
Anserkk - JLL
--------------------
Probé el código enviado y no funciona para mi. Algo debo estar haciendo mal así voy a tener que seguir dándole al inconveniente hasta conseguir que opere o hasta que consiga otra forma de enviar y recibir correos... pero QUE NO DEPENDA DE LAS DLL de Microsoft.
nnicanor
------------
Aquí hay varios hilos respecto a CDOsys, donde se muestran las dificultades que han experimentado varias personas aunque hay muchísimas más (solo tienes que buscar en Google CDOSYS 64)
http://www.vbforums.com/showthread.php?t=652567
http://forums.iis.net/t/1165790.aspx
http://forums.iis.net/t/1169428.aspx
http://blogs.msdn.com/b/mstehle/archive ... -code.aspx
http://www.ctimls.com/Support/KB/Error% ... _Error.htm
Saludos (y que los bytes les acompañen ---parodiando a la "fuerza" de la Guerra de las Galaxias)
Armando
--------------------
Probé el código enviado y no funciona para mi. Algo debo estar haciendo mal así voy a tener que seguir dándole al inconveniente hasta conseguir que opere o hasta que consiga otra forma de enviar y recibir correos... pero QUE NO DEPENDA DE LAS DLL de Microsoft.
nnicanor
------------
Aquí hay varios hilos respecto a CDOsys, donde se muestran las dificultades que han experimentado varias personas aunque hay muchísimas más (solo tienes que buscar en Google CDOSYS 64)
http://www.vbforums.com/showthread.php?t=652567
http://forums.iis.net/t/1165790.aspx
http://forums.iis.net/t/1169428.aspx
http://blogs.msdn.com/b/mstehle/archive ... -code.aspx
http://www.ctimls.com/Support/KB/Error% ... _Error.htm
Saludos (y que los bytes les acompañen ---parodiando a la "fuerza" de la Guerra de las Galaxias)
Armando
FWH + BCC582 + WorkShop 4.5 + Resource Hacker + Mingw
Mis nuevas herramientas
Comunicacion via WhatsApp (+51) 957549 665
Comunicación via Correo: apic1002002 at yahoo dot es; apic1002002@gmail.com
Mis nuevas herramientas
Comunicacion via WhatsApp (+51) 957549 665
Comunicación via Correo: apic1002002 at yahoo dot es; apic1002002@gmail.com
- lucasdebeltran
- Posts: 1303
- Joined: Tue Jul 21, 2009 8:12 am
- Contact:
Re: Volviendo al tema CDO
Armando,
Verifica el tema de los adjuntos.
Prueba a quitar la opción de adjuntos y comprueba si funciona.
O si preparas un ejemplo autocontenido gustosamente lo pruebo.
Un saludo
Verifica el tema de los adjuntos.
Prueba a quitar la opción de adjuntos y comprueba si funciona.
O si preparas un ejemplo autocontenido gustosamente lo pruebo.
Un saludo
Muchas gracias. Many thanks.
Un saludo, Best regards,
Harbour 3.2.0dev, Borland C++ 5.82 y FWH 13.06 [producción]
Implementando MSVC 2010, FWH64 y ADO.
Abandonando uso xHarbour y SQLRDD.
Un saludo, Best regards,
Harbour 3.2.0dev, Borland C++ 5.82 y FWH 13.06 [producción]
Implementando MSVC 2010, FWH64 y ADO.
Abandonando uso xHarbour y SQLRDD.
Re: Volviendo al tema CDO
Armando este ejemplo funciona perfecto.
Incluso con corporativo, tambien con texto enriquecido convirtiendolo a HTML
Espero te sirva
Saludos,
Adhemar
Incluso con corporativo, tambien con texto enriquecido convirtiendolo a HTML
Code: Select all | Expand
#Include "FiveWin.ch"
Function Main()
Local oEmailCfg,oEmailMsg,oLoc
TRY
oEmailCfg := CREATEOBJECT( "CDO.Configuration" )
WITH OBJECT oEmailCfg:Fields
:Item( "http://schemas.microsoft.com/cdo/configuration/smtpserver" ):Value := "exci.lostajiboshotel.com" //"smtp.gmail.com"
:Item( "http://schemas.microsoft.com/cdo/configuration/smtpserverport" ):Value := 25 //Gmail=465, Hotmail=25
:Item( "http://schemas.microsoft.com/cdo/configuration/sendusing" ):Value := 2 // Remote SMTP = 2, local = 1
:Item( "http://schemas.microsoft.com/cdo/configuration/smtpauthenticate" ):Value := .T.
:Item( "http://schemas.microsoft.com/cdo/configuration/smtpusessl" ):Value := .F.
:Item( "http://schemas.microsoft.com/cdo/configuration/sendusername" ):Value := "cuenta@lostajiboshotel.com"
:Item( "http://schemas.microsoft.com/cdo/configuration/sendpassword" ):Value := "password"
:Item( "http://schemas.microsoft.com/cdo/configuration/smtpconnectiontimeout"):Value := 30
:Update()
END WITH
CATCH oError
MsgInfo( "No puede crear la configuración" + ";" + ;
"Error: " + TRANSFORM(oError:GenCode, NIL) + ";" + ;
"SubC: " + TRANSFORM(oError:SubCode, NIL) + ";" + ;
"OSCode: " + TRANSFORM(oError:OsCode, NIL) + ";" + ;
"SubSystem: " + TRANSFORM(oError:SubSystem, NIL) + ";" + ;
"Message: " + oError:Description )
Return .F.
END
oError:=NIL
ExePath:=cFilePath(GetModuleFileName(GetInstance()))
Adjunto:=ExePath+"DATA\imagen.jpg"
cFile:=ExePath+"DATA\TESTRTF.RTF"
RtfToHTML( cFile,"tmpRTF.HTM", 16, "FFFFFF", "Title", 72 )
cCuerpo:=MemoRead(cFile)
TRY
oEmailMsg := CREATEOBJECT ( "CDO.Message" )
WITH OBJECT oEmailMsg
:Configuration = oEmailCfg
:From = chr(34)+" Adhemar "+chr(34)+ "<cuenta@lostajiboshotel.com>"
:To = "adhemar@hotmail.com"
:Subject = "Envio automatico"
:ReplyTo = " "
:Sender = " "
:Organization = "Empresa"
:AddAttachment(Adjunto)
:HTMLBody = cCuerpo //"<HTML> Hello </HTML>"
:Send()
END WITH
SysRefresh()
CATCH oError
MsgInfo( "Could not send message" + ";" + 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+ ;
"Message: " + oError:Description )
Return .F.
END
MsgInfo("Correo enviado")
Return
DLL32 FUNCTION RtfToHTML( cSource AS LPSTR, ;
cDest AS LPSTR, ;
nOption AS LONG, ;
cBG AS LPSTR, ;
cTitel AS LPSTR, ;
nDPI AS LONG ) AS LONG ;
PASCAL FROM "EXRTF2WEB" LIB "IRUN.DLL"
Espero te sirva
Saludos,
Adhemar
Saludos,
Adhemar C.
Adhemar C.