Problemas al guardar mensaje de Outlook

172 views
Skip to first unread message

Miguel A.

unread,
Jun 24, 2013, 12:39:41 PM6/24/13
to publice...@googlegroups.com
Buenas tardes,
 
En un hilo anterior planteaba cómo guardar un mensaje de Outlook como un fichero .msg, cuestión que resolví con su ayuda.
 
 
Pues bien, la instrucción adecuada:
# DEFINE olMSG 3

oMailItem.saveas(&archivo, olMSG)

funciona perfectamente en aplicaciones con vfp 6, pero no así con la versión 9, donde arroja el siguiente error: " ... parámetro no opcional".

No sé si a alguno de ustedes les ha pasado algo semejante, pero no consigo dar con el error que puede haber por el solo hecho de cambiar la versión del fox.

Agradeceré cualquier comentario.

Un saludo,

Miguel A.

 

 

 
 
 

 

 

 

Ricardo Pina

unread,
Jun 24, 2013, 1:43:19 PM6/24/13
to Grupo VFP
Hola Miguel
 
Acabo de probarlo sin problemas
 
#DEFINE olMSG 3
lOutlook = CREATEOBJECT("Outlook.Application") && creamos nuestro objeto de
lMail = lOutlook.CreateItem(0) && Creamos un nuevo mail
lMail.To = "dsip...@yahoo.com.ar"
lMail.Subject = "Asunto"
lMail.Body = "Probando el funcion SaveAs()"
lMail.SaveAs("C:\temp\aa.msg", olMSG)
Verifica el contenido de &archivo
 
Saludos
--
            

                   Ricardo Pina

Desarrollo y Servicios Informáticos

                  Profesionales
               www.dsip.com.ar

 

 

Message has been deleted
Message has been deleted

Miguel A.

unread,
Jun 25, 2013, 2:50:04 AM6/25/13
to publice...@googlegroups.com
Gracias Ricardo,
 
No te he respondido ayer simplemente porque no podía hacerlo, otra vez se me borran los mensajes sin más. Si te fijas abajo de esta lista aparecerán 2 o 3 mensajes borrados. En fin, cosas de la técnica!.
 
He comprobado el nombre del archivo y está correcto, de hecho he puesto un archivo fijo como en tu ejemplo y tampoco funciona. Pero lo más sorprendente es que con VFP 6 funciona a la perfección.
 
Debe ser como el borrado de los mensajes: Cosa de brujos.

Miguel A.

unread,
Jun 26, 2013, 6:41:45 AM6/26/13
to publice...@googlegroups.com
Por favor, ¿nadie tiene alguna idea al respecto?.
 
No consigo resolver este simple cuestión. Ha de ser alguna diferencia entre VFP 6 y 9, o motivada por el Outlook, yo tengo la versión 2007 y como cada una tiene sus pecurialidades, pues no sé...
 
Agradezco cualquier comentario, a veces las cosas más absurdas son las que proporcionan la solución más difícil.
 
Saludos,
Miguel A.

Ricardo Pina

unread,
Jun 26, 2013, 8:38:54 AM6/26/13
to Grupo VFP
jaja
 
Me hiciste acordar al servicio técnico de uno de mis clientes al que llamamos cariñosamente "pone dir", como primera opción a cualquier problema siempre es "reiniciaste el equipo ?"
 
Miguel, por que no cuelgas parte de tu código para ver si hay algo más.
El otro día yo el ejemplo que probé fue en VFP9 y office 2007
 
Saludos

Miguel A.

unread,
Jun 26, 2013, 11:49:29 AM6/26/13
to publice...@googlegroups.com
Cuando uno llega a la desesperación "técnica" es lo que pasa... Estoy empezando a masticarme las venas gr?gr?
 
 

tcAlias = 'curMsg'

*-- Leer Inbox y cargar mensajes en un cursor

loInbox = oNameSpace.GetDefaultFolder(6)  &&& Mensajes recibidos

fecha=dtoc(thisform.txtFecha.value)

loMensajes_e = loInbox.Items.RESTRICT("[ReceivedTime] > '&fecha' and [FlagStatus] <> 2")

IF VARTYPE(loMensajes_e) = 'O'

            if loMensajes_e.COUNT > 0

                        *-- Recorro los mensajes de la bandeja de entrada

                        FOR lnI = 1 TO loMensajes_e.COUNT

                                   loMsg = loMensajes_e.ITEM(lnI)

                                   WITH loMsg

                                               INSERT INTO (tcAlias) (EnviadoPor, Tema, Recibido, Cuerpo, NoLeido, Numero) ;

                                                 VALUES (.Senderemailaddress, .Subject, .ReceivedTime, .Body, .UnRead, lnI) &&sendername guardaría nombre del remitente

                                   ENDWITH

                        ENDFOR

            endif

            llRet = .T.

ELSE

            llRet = .F.

ENDIF

 

* Guardar mensaje con el nombre y ruta incluida en “archivo2”, por ejemplo "c:\copia\recibido3.msg"

archivo2='"'+dire1+minfich+'"'

#DEFINE olMSG 3

IF FILE(&ARCHIVO2)

            MESSAGEBOX('En esa carpeta ya existe un archivo con ese nombre ... ',32,'ATENCIÓN')

ELSE

            fecha1=curMsg.recibido

            replace curMsg.Guardado with .t.

            mitip='E'

            lnI=curMsg.numero

            oMailItem = loMensajes_e.item(lnI)

            oMailItem.SaveAs(&archivo2,olMSG)

            oMailItem.Flagstatus= 2 && esto cambia la banderita

ENDIF

Ricardo Pina

unread,
Jun 26, 2013, 12:13:22 PM6/26/13
to Grupo VFP
En el equipo que estoy ahora no tengo Outlook 2007 y no puedo probar hasta la tarde.
 
Te doy dos obviedades que ya debes haber chequeado
le valor de lnl cuando da error y que archivo2 no tenga espacios en el medio archivo2='"'+alltrim(dire1)+minfich+'"'
 
luego pruebo con tu código
 
Saludos
 

Miguel A.

unread,
Jun 26, 2013, 12:43:07 PM6/26/13
to publice...@googlegroups.com
Si, el valor de lnI es correcto es el registro de los mensajes de entrada y el nombre del fichero da igual, he probado de todas formas y no está ahí el problema por eso le pongo comillas al principio y al final.
 
Lo gracioso de todo esto es que funciona en VFP 6 sin ningún problema hasta ahora.
 
Espero tus noticias, supongo que para mí esa hora serán aproximadamente las 21:00 horas, o sea al tiempo de ver Brasil - Uruguay.

Ricardo Pina

unread,
Jun 26, 2013, 9:15:22 PM6/26/13
to Grupo VFP
Hola Miguel
 
Estuve probando tu código y no me dio el error en ningún momento.
A lo sumo codigo de excepción cuando esta abierto el outlook pero nada más
No encuentro el motivo por el que te esté dando ese error.
 
Saludos

Miguel A.

unread,
Jun 27, 2013, 3:37:13 AM6/27/13
to publice...@googlegroups.com
Pues nada, me seguiré masticando las venas.
 
Gracias de todas formas.
 
Miguel A.

Carlos Yohn (A.G.P.)

unread,
Dec 21, 2014, 2:34:42 PM12/21/14
to publice...@googlegroups.com
Hola Miguel,
¿Solucionaste este tema?
tengo el mismo problema con VFP8 y Outlook 2013
Gracias.
Saludos,

Miguel A.

unread,
Dec 22, 2014, 3:04:25 AM12/22/14
to publice...@googlegroups.com
Hola Carlos, 

Cuánto tiempo! sin noticias tuyas!. ¿Cómo va todo por Bilbao?

Actualmente trabajo con el VFP 9 y no te sé decir cuándo lo resolví, ni si era producto de la versión del VFP o de Outlook, creo recordar que era de este último, que tenía el 2003 y al actualizar al 2009 se solucionó todo.
Bueno, la forma actual es la siguiente:

lnI=curMsg.numero
oMailItem = loMensajes_e.item(lnI)
= oMailItem.saveas (&archivo2) &&(midirD+mifich+transform(lnI) + ".msg")
oMailItem.Flagstatus= 2 && esto cambia la banderita
oMailItem.save && esto lo guarda

Debe ser la última línea la que definitivamente lo guarda.

Que tengas unas felices fiestas.
Miguel A.

Carlos Yohn (A.G.P.)

unread,
Dec 22, 2014, 3:16:22 AM12/22/14
to publice...@googlegroups.com
Yo sigo como siempre. Gracias a Dios.

Bueno; lo he resuelto; es una cosa muy curiosa, cuya solución encuentras por casualidad: necesitas acceder a la propiedad bodyformat del mensaje para después poder guardarlo con 'saveas': seguramente sirva también acceder a otras propiedades, pero no lo he probado. Por lo visto, mientras vfp 8 no tenga el objeto abierto, no le permite guardar.

Pego código simplificado:

 m.outlook = Createobject("outlook.application")
 m.oarea = m.outlook.getnamespace("mapi")
 m.obandeja = area.getdefaultfolder(6)
 m.omensajes = m.obandeja.Ítems

*--- Tiene cojones, pero para poder guardarlo como msg, hay que verificar la propiedad Bodyformat; al menos consultarla
*--- probablemente sirva con otras propiedades, o abrirlo...
m.formatocuerpo = m.omensaje.BodyFormat && si quitas esta línea, fallará con el error de 'parámetro no opcional'
m.extension = "msg"
m.formato = 3 && olMSG
m.fichero = evaluate(m.calias + ".fichero")
m.ficheronuevo = Thisform.prg.fichero_adjunto(m.fichero, m.extension)
*!* m.omensaje.Display(1)
m.conseguido = .t.
try
 m.omensaje.SaveAs(m.ficheronuevo, m.formato) && Type    Optional Variant. The file type to save. Can be one of the following OlSaveAsType constants: olHTML, olMSG, olRTF, olTemplate, olDoc, olTXT, olVCal, olVCard, olICal, or olMSGUnicode.
catch to oerror
 Aerror(m.errores)
 m.conseguido = .f.
endtry
Reply all
Reply to author
Forward
0 new messages