** NORMAS DEL FORO **
Inicio del foro Inicio del foro > Access y VBA > Access y VBA
  Mensajes nuevos Mensajes nuevos RSS - visualizar correo enviado
  Preguntas frecuentes Preguntas frecuentes  Buscar en el foro   Eventos   Registro Registro  Iniciar sesion Iniciar sesion

Tema cerradovisualizar correo enviado

 Responder Responder Página  123>
Autor
Mensaje
valencianoblaugrana Ver desplegable
Asiduo
Asiduo


Unido: 20/Junio/2014
Localización: Alicante
Estado: Sin conexión
Puntos: 422
Enlace directo a este mensaje Tema: visualizar correo enviado
    Enviado: 19/Agosto/2020 a las 15:02
Buenas tardes,
Tengo una BBDD en la que en un formulario envío correos electrónico a través de outlook. Luego de enviados puedo con un botón en ese formulario visualizarlo referenciando su "entryID". Todo me funcionaba a las mil maravillas hasta que me he cambiado de ordenador y reinstalé outlook, y ha dejado de funcionar.

El código es el siguiente:
           
DoCmd.OpenForm "enviando", , , , , acDialog
                               
               ' bucle para esperar que se actualice la carpeta enviados
               ' cuando notemos que el nº de mensajes cambie, salimos del bucle
               Do While MensajesEnviados = f.Items.Count
               DoEvents
               Loop
               ' referenciamos el último mail de la carpeta enviados
               Set Msg2 = f.Items(f.Items.Count)
               
               Me.ID_txt = Msg2.EntryID
               Call Guardar_Click
                
Cual puede ser el fallo.

Muchas gracias de antemano
Arriba
xavi Ver desplegable
Administrador
Administrador
Avatar
Terrassa-BCN

Unido: 10/Mayo/2005
Localización: Catalunya ||||
Estado: Sin conexión
Puntos: 13125
Enlace directo a este mensaje Enviado: 19/Agosto/2020 a las 15:40
A mi ese bucle Do..While me da un miedo tremendo. Sospecho que se queda ahí dentro "ad infinitum"
Xavi, un minyó de Terrassa

Mi web
Arriba
Mihura Ver desplegable
Administrador
Administrador
Avatar

Unido: 06/Mayo/2005
Localización: En la dehesa
Estado: Sin conexión
Puntos: 11809
Enlace directo a este mensaje Enviado: 19/Agosto/2020 a las 19:52
Además, al abrir el formulario en Modal (acdialog) el código que sigue a la apertura del mismo no se ejecuta hasta que no se cierra el formulario abierto, por lo que ese bucle de espera no tiene sentido.


Jesús Mansilla Castells.
Saludos desde Móstoles.

Access Aplicaciones
Tecsys.es
Arriba
valencianoblaugrana Ver desplegable
Asiduo
Asiduo


Unido: 20/Junio/2014
Localización: Alicante
Estado: Sin conexión
Puntos: 422
Enlace directo a este mensaje Enviado: 20/Agosto/2020 a las 09:06
Antes de cambiar de ordenador y reinstalar el office, me funcionaba sin problemas. Es posible que los "entryID", de los mensajes enviados haya cambiado?

Muchas gracias
Arriba
valencianoblaugrana Ver desplegable
Asiduo
Asiduo


Unido: 20/Junio/2014
Localización: Alicante
Estado: Sin conexión
Puntos: 422
Enlace directo a este mensaje Enviado: 20/Agosto/2020 a las 09:27
Un dato mas,

Al ir a visualizar el correo enviado en outlook, a través del botón en formulario cuyo código es

Private Sub Visualizar_Click()
Dim f As Outlook.Folder
Dim Msg2 As Outlook.MailItem
Dim rs As DAO.Recordset
Dim Ns As Outlook.NameSpace
Dim OutLookApp  As Outlook.Application
Dim strSQL As String

strSQL = "SELECT * FROM Tdatos WHERE Not Isnull(EntryID)"

    Set OutLookApp = CreateObject("Outlook.Application")
     
    Set Ns = OutLookApp.GetNamespace("MAPI")
    
    Set rs = CurrentDb.OpenRecordset(strSQL)
    
    Set f = Ns.GetDefaultFolder(olFolderSentMail)
         
          
     While Not rs.EOF
    
       ' Debug.Print rs("EntryID")
        
     
           If ID_txt = rs("EntryID") Then
           Debug.Print rs("EntryID")
            Set Msg2 = Ns.GetItemFromID(rs("EntryID")) AQUI ES DONDE SE PARA
            ' visualizamos el correo
            Msg2.Display
            Exit Sub
           Else
           rs.MoveNext
           End If
                
     Wend
   
End Sub

El error que me sale es:

se ha producido el error -2147220991(80040201) en tiempo de ejecución
Error en la operación. Se produjo un error desconocido en las interfaces de mensajes. Si el problema persiste reinicie outlook.

Saludos

Arriba
pitxiku Ver desplegable
Colaborador
Colaborador
Avatar

Unido: 27/Septiembre/2017
Localización: En mi casa
Estado: Sin conexión
Puntos: 1228
Enlace directo a este mensaje Enviado: 20/Agosto/2020 a las 15:04
¿Has probado a recorrer la colección de elementos de la carpeta de Outlook que estás controlando y ver su propiedad EntryId? Microsoft dice que el valor puede cambiar:

- https://docs.microsoft.com/es-es/office/vba/api/outlook.mailitem.entryid

Eso, por un lado. Por otro, tú puedes cambiar los mensajes de carpeta y después no encontrarlos. De hecho, yo tengo una serie de carpetas y dejo mis mensajes agrupados por tema, incluyendo los que yo he enviado.

Editado por pitxiku - 20/Agosto/2020 a las 15:04
Arriba
valencianoblaugrana Ver desplegable
Asiduo
Asiduo


Unido: 20/Junio/2014
Localización: Alicante
Estado: Sin conexión
Puntos: 422
Enlace directo a este mensaje Enviado: 21/Agosto/2020 a las 09:42
Buenos días,

Acabo de comprobar la posible causa del error. 
Normalmente estoy enviando los correos desde una cuenta predeterminada que tiene mas de 400 mensajes en la carpeta de enviados. Lo he comprobado con otra cuenta que tiene 1 correo en la carpeta de enviados y ha funcionado perfectamente. Es posible que el bucle que tengo programado para extraer el último "EntryID" de la carpeta "enviados"  se quede "ad infinitum" como bien me comentaba Xavi.

La única solución es borrar correos de la carpeta enviados. Ven alguna otra solución?

Muchas gracias
Arriba
xavi Ver desplegable
Administrador
Administrador
Avatar
Terrassa-BCN

Unido: 10/Mayo/2005
Localización: Catalunya ||||
Estado: Sin conexión
Puntos: 13125
Enlace directo a este mensaje Enviado: 21/Agosto/2020 a las 10:40
Estaria bien saber el objetivo del conjunto de acciones. Voy a suponer:

- envías correo por automatización
- abres correo
- guardas el correo en disco

Si es así, lo que debes hacer es un .SaveAs del objeto MailItem antes del .Send

Si no es así... explica lo que pretendes que el sistema haga.

Un saludo
Xavi, un minyó de Terrassa

Mi web
Arriba
valencianoblaugrana Ver desplegable
Asiduo
Asiduo


Unido: 20/Junio/2014
Localización: Alicante
Estado: Sin conexión
Puntos: 422
Enlace directo a este mensaje Enviado: 21/Agosto/2020 a las 11:08
Buenos días Xavi,

Lo que pretendo es que una vez enviado el correo por automatización, el "EntryID" se guarde en el correspondiente registro de la tabla "correos enviados" con la finalidad de que más adelante, cuando se requiera, desde el  mismo registro  y a través de un formulario con un botón "visualizar", poder recuperar el correo que envió Outlook, consultar el adjunto que llevaba y demás.

Muchas gracias
Arriba
Mihura Ver desplegable
Administrador
Administrador
Avatar

Unido: 06/Mayo/2005
Localización: En la dehesa
Estado: Sin conexión
Puntos: 11809
Enlace directo a este mensaje Enviado: 21/Agosto/2020 a las 13:35
Para lo que tú quieres hacer no te puedes basar en el EntryID ya que puede cambiar sin previo aviso.

Lo suyo es que abras la carpeta de correo (por automatización) y muestres los correos existentes al usuario, para ello conviene tener o un muy buen árbol de carpetas o una identificación que te permita individualizar el mensaje, se suele utilizar una clave en el asunto.


Jesús Mansilla Castells.
Saludos desde Móstoles.

Access Aplicaciones
Tecsys.es
Arriba
valencianoblaugrana Ver desplegable
Asiduo
Asiduo


Unido: 20/Junio/2014
Localización: Alicante
Estado: Sin conexión
Puntos: 422
Enlace directo a este mensaje Enviado: 22/Agosto/2020 a las 13:21
Muchas gracias por la aportación.

Entiendo que poner una clave en el asunto para identificarlo como único, significa que la persona que reciba ese correo la va a ver. Por eso lo del EntryID

Muchas gracias
Arriba
Mihura Ver desplegable
Administrador
Administrador
Avatar

Unido: 06/Mayo/2005
Localización: En la dehesa
Estado: Sin conexión
Puntos: 11809
Enlace directo a este mensaje Enviado: 22/Agosto/2020 a las 13:33
Si te fijas, en los correos que cambias con empresas en el asunto llevan una clave (un nº de asunto, un Id, algo ....) que además te piden que no lo cambies.

Por esa clave es por dónde después se buscan los correos en la empresa.


Jesús Mansilla Castells.
Saludos desde Móstoles.

Access Aplicaciones
Tecsys.es
Arriba
valencianoblaugrana Ver desplegable
Asiduo
Asiduo


Unido: 20/Junio/2014
Localización: Alicante
Estado: Sin conexión
Puntos: 422
Enlace directo a este mensaje Enviado: 22/Agosto/2020 a las 13:38
Pues la verdad es que no me he fijado. Algun ejemplo ilustrativo?

Muchas gracias
Arriba
Mihura Ver desplegable
Administrador
Administrador
Avatar

Unido: 06/Mayo/2005
Localización: En la dehesa
Estado: Sin conexión
Puntos: 11809
Enlace directo a este mensaje Enviado: 22/Agosto/2020 a las 17:36
¿No has dado / seguido nunca un parte del seguro por correo?
¿O un ticket con un servidor de internet?
Jesús Mansilla Castells.
Saludos desde Móstoles.

Access Aplicaciones
Tecsys.es
Arriba
valencianoblaugrana Ver desplegable
Asiduo
Asiduo


Unido: 20/Junio/2014
Localización: Alicante
Estado: Sin conexión
Puntos: 422
Enlace directo a este mensaje Enviado: 22/Agosto/2020 a las 18:04
Se trata de poner un número distintivo en el asunto del correo y luego buscarlo en la carpeta de enviados tal y como lo tengo yo montado pero en vez del entryID, identificar el numero de asunto. Seria asi?
Arriba
 Responder Responder Página  123>
  Compartir tema   

Ir al foro Permisos de foro Ver desplegable