visualizar correo enviado
Impreso de: Foro de Access y VBA
Categoría: Access y VBA
Nombre del foro: Access y VBA
Descripción del foro: Foro de programacion en Access (Con código y sin código)
URL: http://www.mvp-access.com/foro/forum_posts.asp?TID=85448
Fecha de impresión: 26/Marzo/2026 a las 17:27
Tema: visualizar correo enviado
Publicado por: valencianoblaugrana
Asunto: visualizar correo enviado
Fecha de publicación: 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
|
Respuestas:
Publicado por: xavi
Fecha de publicación: 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
http://www.llodax.com" rel="nofollow - Mi web
|
Publicado por: Mihura
Fecha de publicación: 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.
http://www.accessaplicaciones.com" rel="nofollow - Access Aplicaciones http://www.tecsys.es" rel="nofollow - Tecsys.es
|
Publicado por: valencianoblaugrana
Fecha de publicación: 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
|
Publicado por: valencianoblaugrana
Fecha de publicación: 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
|
Publicado por: pitxiku
Fecha de publicación: 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.
|
Publicado por: valencianoblaugrana
Fecha de publicación: 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
|
Publicado por: xavi
Fecha de publicación: 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
http://www.llodax.com" rel="nofollow - Mi web
|
Publicado por: valencianoblaugrana
Fecha de publicación: 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
|
Publicado por: Mihura
Fecha de publicación: 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.
http://www.accessaplicaciones.com" rel="nofollow - Access Aplicaciones http://www.tecsys.es" rel="nofollow - Tecsys.es
|
Publicado por: valencianoblaugrana
Fecha de publicación: 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
|
Publicado por: Mihura
Fecha de publicación: 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.
http://www.accessaplicaciones.com" rel="nofollow - Access Aplicaciones http://www.tecsys.es" rel="nofollow - Tecsys.es
|
Publicado por: valencianoblaugrana
Fecha de publicación: 22/Agosto/2020 a las 13:38
Pues la verdad es que no me he fijado. Algun ejemplo ilustrativo?
Muchas gracias
|
Publicado por: Mihura
Fecha de publicación: 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.
http://www.accessaplicaciones.com" rel="nofollow - Access Aplicaciones http://www.tecsys.es" rel="nofollow - Tecsys.es
|
Publicado por: valencianoblaugrana
Fecha de publicación: 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?
|
Publicado por: Mihura
Fecha de publicación: 22/Agosto/2020 a las 18:20
|
Si.
Estos son los asuntos de varios correos de 1&1:
RE: Prórroga del periodo de validez de su(s) dominio(s), C835607418 RE: C278148624 Re: CSCF_ES_info(CSCF_ES_info) Re: RE: Attacks originating from your 1&1 Server [Ticket AB40583151]
Como ves son respuestas, y lo remarcado es el 'código' único del hilo de correos.
------------- Jesús Mansilla Castells. Saludos desde Móstoles.
http://www.accessaplicaciones.com" rel="nofollow - Access Aplicaciones http://www.tecsys.es" rel="nofollow - Tecsys.es
|
Publicado por: valencianoblaugrana
Fecha de publicación: 22/Agosto/2020 a las 20:04
|
Buenas tardes Acabo de poner el siguiente codigo en el botón de visualizar el mensaje identificando el asunto del mismo.
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"
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 Me.txtAsunto_vis = rs!txtAsunto Then Debug.Print rs!txtAsunto Set Msg2 = Ns.GetItemFromID(rs!txtAsunto) ' visualizamos el correo Msg2.Display Exit Sub Else rs.MoveNext End If Wend End Sub
Me da el error de que no puede abrir el elemento, a pesar de identificarlo correctamente.
Muchas gracias
|
Publicado por: Mihura
Fecha de publicación: 22/Agosto/2020 a las 22:03
|
No creo que lo estés identificando correctamente, estás recuperando un correo usando el asunto, no el Id del mismo.
------------- Jesús Mansilla Castells. Saludos desde Móstoles.
http://www.accessaplicaciones.com" rel="nofollow - Access Aplicaciones http://www.tecsys.es" rel="nofollow - Tecsys.es
|
Publicado por: valencianoblaugrana
Fecha de publicación: 23/Agosto/2020 a las 11:37
Buenos días,Cual seria el método correcto. Estoy buscando dentro de las alternativas de los método de outlook y no encuentro la adecuada.
Muchas gracias
|
Publicado por: Mihura
Fecha de publicación: 23/Agosto/2020 a las 12:51
El método correcto es ese ... pero no le pasas el valor adecuado.
------------- Jesús Mansilla Castells. Saludos desde Móstoles.
http://www.accessaplicaciones.com" rel="nofollow - Access Aplicaciones http://www.tecsys.es" rel="nofollow - Tecsys.es
|
Publicado por: valencianoblaugrana
Fecha de publicación: 23/Agosto/2020 a las 15:10
Buenas tardes Cuál sería el valor adecuado? Llevo mirando todas las propiedades y métodos del objeto y no lo encuentro. De ahí mi consulta
Gracias
|
Publicado por: Mihura
Fecha de publicación: 23/Agosto/2020 a las 15:45
|
Échale un vistazo a esto:
https://docs.microsoft.com/es-es/office/vba/outlook/how-to/items-folders-and-stores/working-with-entryids-and-storeids" rel="nofollow - https://docs.microsoft.com/es-es/office/vba/outlook/how-to/items-folders-and-stores/working-with-entryids-and-storeids
------------- Jesús Mansilla Castells. Saludos desde Móstoles.
http://www.accessaplicaciones.com" rel="nofollow - Access Aplicaciones http://www.tecsys.es" rel="nofollow - Tecsys.es
|
Publicado por: valencianoblaugrana
Fecha de publicación: 23/Agosto/2020 a las 16:18
Muchas gracias Pero quiero que busque por el asunto, no por el entryID, así es como lo tenía montado antes. Saludos
|
Publicado por: Mihura
Fecha de publicación: 23/Agosto/2020 a las 17:50
|
Por eso te he pasado ese enlace. Tienes que abrir directamente la carpeta de correos de Outlook y hacer un barrido de los correos hasta que encuentres el que necesitas. No te vale guardar el EntryID en un recorset propio porque cambia con las distintas acciones que realizas en el correo (p.ej. cuando cambias el correo de una carpeta a otra).
Y por cierto, para entendernos, estás intentando abrir un registro del fichero de clientes buscando en el campo código del mismo usando el nombre y los apellidos, eso no podría funcionar nunca.
------------- Jesús Mansilla Castells. Saludos desde Móstoles.
http://www.accessaplicaciones.com" rel="nofollow - Access Aplicaciones http://www.tecsys.es" rel="nofollow - Tecsys.es
|
Publicado por: valencianoblaugrana
Fecha de publicación: 27/Agosto/2020 a las 20:29
He puesto el siguiente codigo pero me sigue dando error de bloque withPrivate Sub Visualizar_Click() Dim f As Outlook.Folder Dim Msg2 As Object Dim rs As DAO.Recordset Dim Ns As Outlook.NameSpace Dim OutLookApp As Outlook.Application Dim strSQL As String
strSQL = "SELECT * FROM Tdatos"
Set OutLookApp = CreateObject("Outlook.Application") Set Ns = OutLookApp.GetNamespace("MAPI") Set rs = CurrentDb.OpenRecordset(strSQL) Set f = Ns.GetDefaultFolder(olFolderSentMail) While Not rs.EOF If Me.txtAsunto_vis = rs!txtAsunto Then Set Msg2.Subject = rs!txtAsunto ' visualizamos el correo Msg2.Display Exit Sub Else rs.MoveNext End If Wend End Sub
Muchas gracias
|
Publicado por: Mihura
Fecha de publicación: 27/Agosto/2020 a las 21:41
|
Es el mismo código del otro día ¿no?
... por cierto, analicemos el código que has escrito (repetido del otro día)
Set OutLookApp = CreateObject("Outlook.Application") ... abres una app Outlook, bien Set Ns = OutLookApp.GetNamespace("MAPI") ... abres el espacio de trabajo, bien Set rs = CurrentDb.OpenRecordset(strSQL) ... abres el recordset con los mensajes, vale Set f = Ns.GetDefaultFolder(olFolderSentMail) ... seleccionas la carpeta de correos enviados, bien (si es ahí dónde quieres buscar)
If Me.txtAsunto_vis = rs!txtAsunto Then Set Msg2.Subject = rs!txtAsunto ' visualizamos el correo Msg2.Display Exit Sub Else rs.MoveNext End If Wend - Haces un bucle en el recordset, hasta que encuentras un registro con el campo asunto igual que un campo de texto llamado asunto, vale (hay otras formas de hacerlo más eficiente) - una vez encontrado, creas un objeto igual al campo asunto del recordset y le dices que lo muestre (suponiendo que tuviera el método Display) - lo que has hecho es decir que el objeto Msg2 es un campo de texto (probablemente, no me atrevería a jurarlo, porque eso del Msg2.Subject a saber como se lo va a tomar access) - no tiene ninguna relación con nada de lo declarado perteneciente a Outlook - y por cierto, para hacer eso te valdría con hacer: Set Msg2.Subject = me.txtAsunto_vis y te ahorras el recordset y el bucle
La verdad es que para mi no tiene ni pies ni cabeza, vamos, que estas copiando trozos de código de varios sitios, poniéndolos juntos y a ver si funciona.
Empecemos de nuevo: - ¿Te has mirado el enlace que te puse el otro día?
------------- Jesús Mansilla Castells. Saludos desde Móstoles.
http://www.accessaplicaciones.com" rel="nofollow - Access Aplicaciones http://www.tecsys.es" rel="nofollow - Tecsys.es
|
Publicado por: valencianoblaugrana
Fecha de publicación: 28/Agosto/2020 a las 13:10
Buenos días,Si me estuve mirando el enlace, donde venia un ejemplo de como buscar un determinado mensaje de correo a través de su EntryID. Así es como lo tenia yo montado desde un principio y me funcionaba hasta que volví a reinstalar Outlook y perdió su funcionalidad ya que los EntryID cambian. Ahora lo que deseo es hacer es la búsqueda del mensaje a través del ASUNTO tal y como me comentaste.
Un saludo
|
Publicado por: Mihura
Fecha de publicación: 28/Agosto/2020 a las 13:59
|
Perfecto, en el enlace que te he puesto hay un ejemplo de como barrer una carpeta de outlook buscando 'algo'.
¿ Puedes poner aquí lo que has hecho basándote en ese ejemplo ?
------------- Jesús Mansilla Castells. Saludos desde Móstoles.
http://www.accessaplicaciones.com" rel="nofollow - Access Aplicaciones http://www.tecsys.es" rel="nofollow - Tecsys.es
|
Publicado por: valencianoblaugrana
Fecha de publicación: 28/Agosto/2020 a las 19:34
|
Buenas tardes, He probado con el ejemplo que me pusiste, copiándolo en un módulo para intentar hacerlo funcionar y seguirlo para ver cada cosa que es. Pero me esta dando error constantemente. Seguramente hay variables que declarar o cosas que faltan, alguna referencia. Me supera, comprendo que es algo complejo para mi lo que pretendo hacer y no me gustaría alargar el hilo de manera indefinida sin llegar a una solución.
Muchas gracias
Saludos
|
Publicado por: Mihura
Fecha de publicación: 28/Agosto/2020 a las 20:17
|
Pues con los datos que das bien poco podemos hacer desde aquí ...
------------- Jesús Mansilla Castells. Saludos desde Móstoles.
http://www.accessaplicaciones.com" rel="nofollow - Access Aplicaciones http://www.tecsys.es" rel="nofollow - Tecsys.es
|
Publicado por: valencianoblaugrana
Fecha de publicación: 29/Agosto/2020 a las 11:38
|
Buenos dias Aqui esta el ejemplo que trato de hacer funcionar
Sub OutlookEntryID()
Dim Application As Outlook.Application Dim olns As Outlook.NameSpace ' If there are more than 500 contacts, change the following line: Dim MyEntryID(500) As String Dim StoreID As String Dim EntryID As String Dim objFolder As Folder Set olns = Application.GetNamespace("MAPI") Set objFolder = olns.GetDefaultFolder(olFolderContacts) ' Get the StoreID, which is a property of the folder. StoreID = objFolder.StoreID ' Set objAllContacts equal to the collection of all contacts. Set AllContacts = objFolder.Items i = 0 ' Loop to get all of the EntryIDs for the contacts. For Each item In AllContacts i = i + 1 MyEntryID(i) = item.EntryID Next ' Randomly choose the 2nd contact to retrieve. Set item = olns.GetItemFromID(MyEntryID(2), StoreID) item.Display
End Sub
trato de hacerlo funcionar y seguirlo para comprenderlo pero me sale bloque with no establecido, esta copiado del enlace que me pasaste.
Saludos
|
Publicado por: Mihura
Fecha de publicación: 29/Agosto/2020 a las 12:41
|
La verdad es que los chicos de M$ se han lucido con el ejemplo, faltan un montón de declaraciones de variables. Prueba con este:
Private Sub Cmd_prueba_contactos_Click() ' If there are more than 500 contacts, change the following line: Dim MyEntryID(500) As String Dim StoreID As String Dim EntryID As String Dim ObjApp As Outlook.Application Dim ObjNs As Outlook.NameSpace Dim ObjFolder As Outlook.Folder Dim ObjMail As Outlook.MailItem Dim ObjAtt As Outlook.Attachments Dim AllContacts As Outlook.Items Dim Item As Object Set ObjApp = CreateObject("Outlook.Application") Set ObjNs = ObjApp.GetNamespace("MAPI") Set ObjFolder = ObjNs.GetDefaultFolder(olFolderContacts) ' Get the StoreID, which is a property of the folder. StoreID = ObjFolder.StoreID ' Set objAllContacts equal to the collection of all contacts. Set AllContacts = ObjFolder.Items i = 0 ' Loop to get all of the EntryIDs for the contacts. For Each Item In AllContacts i = i + 1 MyEntryID(i) = Item.EntryID Next Item ' Randomly choose the 2nd contact to retrieve. Set Item = ObjNs.GetItemFromID(MyEntryID(2), StoreID) Item.Display
End Sub
|
Hay ya alguna variable declarada que vas a usar después.
Hazlo 'rular' y con puntos de parada entiende los pasos que da. Analiza Item sus métodos y propiedades porque es lo que vas a tener que usar cuando cambies a la carpeta de mensajes (usa F1 que la ayuda es muy completa).
------------- Jesús Mansilla Castells. Saludos desde Móstoles.
http://www.accessaplicaciones.com" rel="nofollow - Access Aplicaciones http://www.tecsys.es" rel="nofollow - Tecsys.es
|
Publicado por: valencianoblaugrana
Fecha de publicación: 29/Agosto/2020 a las 16:07
|
Buenas tardes el código me funciona perfectamente, pero me surge la duda de que tengo dos cuentas en outlook, una pop3 y otra imap. Siempre me recupera desde la cuenta pop3. Con lo cual he modificado el código a este nuevo teniendo en cuenta eso pero sigue recuperando de la cuenta pop3.
Sub Cmd_prueba_contactos_Click() ' If there are more than 500 contacts, change the following line: Dim MyEntryID(500) As String Dim StoreID As String Dim EntryID As String Dim cuenta As String Dim oAccount As Outlook.Account Dim ObjApp As Outlook.Application Dim ObjNs As Outlook.NameSpace Dim ObjFolder As Outlook.Folder Dim ObjMail As Outlook.MailItem Dim ObjAtt As Outlook.Attachments Dim AllContacts As Outlook.Items Dim Item As Object Set ObjApp = CreateObject("Outlook.Application") Set ObjNs = ObjApp.GetNamespace("MAPI")
For Each oAccount In Session.Accounts
Select Case (oAccount.AccountType) Case Outlook.OlAccountType.olImap Set ObjFolder = ObjNs.GetDefaultFolder(olFolderSentMail) ' Get the StoreID, which is a property of the folder. StoreID = ObjFolder.StoreID ' Set objAllContacts equal to the collection of all contacts. Set AllContacts = ObjFolder.Items i = 0 ' Loop to get all of the EntryIDs for the contacts. For Each Item In AllContacts i = i + 1 MyEntryID(i) = Item.EntryID Next Item ' Randomly choose the 2nd contact to retrieve. Set Item = ObjNs.GetItemFromID(MyEntryID(2), StoreID) Item.Display End Select
Next
End Sub
|
Publicado por: Mihura
Fecha de publicación: 29/Agosto/2020 a las 18:33
|
Lo de recuperar correos de un archivo (Almacen) Outlook u otro es un charco que ya pisaremos más adelante, cuando seamos capaces de elegir un correo de la carpeta enviados y visualizarlo.
Como dijo nuestro amigo Jack el destripador, por partes  .
Lo primero vamos a quitar ese almacenamiento de los items en una tabla -que no necesitamos- y a analizar un item, para no liarnos sería bueno cambiar el nombre a la variable AllContacts por AllItems, viendo sus propiedades y métodos. En uno de ellos veremos el campo asunto y a partir de ahí podremos buscar el que necesitamos.
------------- Jesús Mansilla Castells. Saludos desde Móstoles.
http://www.accessaplicaciones.com" rel="nofollow - Access Aplicaciones http://www.tecsys.es" rel="nofollow - Tecsys.es
|
Publicado por: valencianoblaugrana
Fecha de publicación: 29/Agosto/2020 a las 19:53
|
Buenas tardes El siguiente código me abre el mensaje de la bandeja de elementos enviados cuyo asunto es "prueba"
Sub Cmd_prueba_contactos_Click() Dim ObjApp As Outlook.Application Dim ObjNs As Outlook.NameSpace Dim ObjFolder As Outlook.Folder Dim AllItems As Outlook.Items Dim Item As Object Set ObjApp = CreateObject("Outlook.Application") Set ObjNs = ObjApp.GetNamespace("MAPI")
Set ObjFolder = ObjNs.GetDefaultFolder(olFolderSentMail) Set AllItems = ObjFolder.Items Set Item = AllItems.Item("prueba") Item.Display
End Sub
No hace falta hacer el barrido con el bucle, no? directamente de esta forma de abre el mensaje con un asunto determinado. Es correcto?
Saludos
|
Publicado por: Mihura
Fecha de publicación: 29/Agosto/2020 a las 22:00
Si te lo abre es correcto .... 
Ahora bien, yo le veo una pega y un engorro ...
La pega es como tengas dos correos con el mismo asunto ... y el engorro que tienes que mantener una tabla en Access con todos los correos que quieras.
Pero si esa solución te vale, .... pues no hay nada más que hablar.
------------- Jesús Mansilla Castells. Saludos desde Móstoles.
http://www.accessaplicaciones.com" rel="nofollow - Access Aplicaciones http://www.tecsys.es" rel="nofollow - Tecsys.es
|
Publicado por: valencianoblaugrana
Fecha de publicación: 29/Agosto/2020 a las 22:08
El asunto se puede codificar de alguna manera para evitar duplicados y respecto a la tabla, la voy almacenando cuando envío los correos. La cuestión de antes que formulada sobre tener dos cuentas de correo en outlook y que abra de una cuenta o de otra?
Gracias
|
Publicado por: Mihura
Fecha de publicación: 30/Agosto/2020 a las 10:50
|
No se abre una cuenta u otra, lo que buscas es en las distintas carpetas de los distintos archivos (almacenes) que tengas configurado en Outlook.
Las carpetas se llaman: \\Outlook\Bandeja de Entrada \\micuenta@hotmail.com\Bandeja de Salida \\micuenta@hotmail.com\Archivo
... pero no se pueden acceder directamente por nombre (esto sólo se puede hacer con las carpetas estándard de Outlook).
Mírate este enlace, (los ejemplos tendrás que buscarlos en extranjero), por lo menos a mí no me ha salido ninguno en cristiano).
https://www.extendoffice.com/documents/outlook/4508-outlook-search-by-folder-name.html" rel="nofollow - https://www.extendoffice.com/documents/outlook/4508-outlook-search-by-folder-name.html
------------- Jesús Mansilla Castells. Saludos desde Móstoles.
http://www.accessaplicaciones.com" rel="nofollow - Access Aplicaciones http://www.tecsys.es" rel="nofollow - Tecsys.es
|
Publicado por: valencianoblaugrana
Fecha de publicación: 30/Agosto/2020 a las 12:44
Muchas gracias por el ejemplo,La pregunta es porque siempre, con el método que hemos utilizado anteriormente y que me has explicado, me muestra el correo utilizando la misma cuenta?. Tiene que ver con que sea la cuenta predeterminada dentro del programa. Es por ser pop3, Imap..etc
Un saludo
|
Publicado por: Mihura
Fecha de publicación: 30/Agosto/2020 a las 13:28
|
Al mostrar un correo te muestra los campos De: Para: CC: Asunto: propios del correo. No muestra nada más.
... o yo no sé ver lo que te refieres ... 
Si acaso cuelga una imágen.
------------- Jesús Mansilla Castells. Saludos desde Móstoles.
http://www.accessaplicaciones.com" rel="nofollow - Access Aplicaciones http://www.tecsys.es" rel="nofollow - Tecsys.es
|
Publicado por: valencianoblaugrana
Fecha de publicación: 30/Agosto/2020 a las 13:45
|
Tengo dos cuentas de correo gestionadas dentro de Outlook, jaimesor@telefonica.net jaimesor42@gmail.com
Al buscar el correo y mostrarlo por entryID, por ejemplo, en la carpeta de enviados (ejemplo que muy bien me has explicado y esta funcionando), siempre me los recupera de la cuenta: jaimesor@telefonica.net. el código siempre acude a ella.
porque el código tiene ese comportamiento?
Y si quiero que me los recupere de la bandeja de enviados de la otra cuenta?
Saludos
|
Publicado por: Mihura
Fecha de publicación: 30/Agosto/2020 a las 14:00
|
O bien cambias de cuenta predeterminada o bien buscas la carpeta por código, como te decía más arriba cada carpeta tiene una dirección absoluta dependiendo del archivo pst (ost) del que cuelga:
\\Outlook\Bandeja de Entrada \\micuenta@hotmail.com\Bandeja de Salida \\micuenta@hotmail.com\Archivo
------------- Jesús Mansilla Castells. Saludos desde Móstoles.
http://www.accessaplicaciones.com" rel="nofollow - Access Aplicaciones http://www.tecsys.es" rel="nofollow - Tecsys.es
|
Publicado por: javier.mil
Fecha de publicación: 01/Septiembre/2020 a las 13:11
valencianoblaugrana escribió:
porque el código tiene ese comportamiento?
Y si quiero que me los recupere de la bandeja de enviados de la otra cuenta?
|
Buenas , el comportamiento es el normal ,..... en OutLook siempre tiene una cuenta por defecto asignada,......... asi que es normal ese comportamiento y que te devuelva el resultado de tu cuenta de email por defecto (principal) .... Puedes cambiar "a mano" la cuenta por defecto (principal) por otra,...... y veras otros resultados ........ También lo puedes hacer por código ........... adapta lo según tus necesidades
Pon el siguiente código en un MODULO standard
Public Function funAsignarCuentaOutLook(PonCuentaEmail As String) As Boolean '--------------------------------------------------------------------------------------- ' Procedimiento: funAsignarCuentaOutLook ' Autor: Javier Gomez ("Javier.Mil") ' WEB: www.accessdemo.info ' Proposito: Asignar cuenta por defecto (principal) de OutLook '--------------------------------------------------------------------------------------- On Error GoTo Err_Local
Const cMailItem As Byte = 0 Dim objOutlook As Object Dim objEmail As Object Dim objAccounts As Object Dim objAccountNew As Object Dim objAccountTemp As Object Dim booFoundAccount As Boolean
funAsignarCuentaOutLook = False
Set objOutlook = CreateObject("Outlook.Application") Set objEmail = objOutlook.CreateItem(cMailItem)
Rem ******* INICIO ASIGNO LA CUENTA DE OULOOK POR DEFECTO (PRINCIPAL) ********************************** Rem la cuenta que tengas por defecto en tu outlook funciona mejor perooooo Rem tambien se puede enviar desde cualquier otra cuenta que tengas en tu outlook
Set objAccounts = objEmail.Session.Accounts
Rem busca la cuenta nueva For Each objAccountTemp In objAccounts DoEvents
If objAccountTemp.smtpAddress = PonCuentaEmail Then Rem Se ha encontrado la cuenta Set objAccountNew = objAccountTemp booFoundAccount = True
' Debug.Print objEmail.Application.Session.Accounts(objAccountTemp.smtpAddress).DisplayName ' MsgBox objEmail.Application.Session.Accounts(objAccountTemp.smtpAddress).DisplayName
Exit For End If
Next objAccountTemp
If booFoundAccount = False Then MsgBox "No se ha podido encontrar la cuenta " & PonCuentaEmail & " En tu Outlook" & vbNewLine & vbNewLine & _ "Deberias configurar esta cuenta en tu OutLook", vbExclamation, "Email"
MsgBox "Aviso: Ahora el programa se cerrara", vbExclamation, "Aviso"
Access.Application.DoCmd.Quit acQuitSaveAll Exit Function
End If
objEmail.SendUsingAccount = objAccountNew Rem *********** FIN ASIGNO LA CUENTA DESDE DONDE SE ENVIA EL EMIAL ***********************************
Close_Local: ' objOutlook.Quit ' << No poner esta instruccion
Set objOutlook = Nothing Set objEmail = Nothing
Set objAccounts = Nothing Set objAccountNew = Nothing Set objAccountTemp = Nothing
funAsignarCuentaOutLook = True
Exit_Local: On Error GoTo 0 Exit Function
Err_Local: funAsignarCuentaOutLook = False
Debug.Print Err.Description, vbCritical, "Error N°: " & Err.Number MsgBox Err.Description, vbCritical, "Error N°: " & Err.Number
Resume Exit_Local End Function
------------- https://www.accessdemo.info" rel="nofollow - https://www.accessdemo.info
|
Publicado por: valencianoblaugrana
Fecha de publicación: 12/Septiembre/2020 a las 13:11
|
Muchísimas gracias por vuestras aportaciones y paciencia conmigo, al fin lo he logrado hacer funcionar. Se puede cerrar el hilo
Reciban un cordial saludo
|
|