E
Eduard Crespo
Tengo un problema con el código de abajo. Utiliza la libreria Microsoft CDO
1.21 Library (CDO.dll), la cual incluye el conjunto de objetos MAPI.
El problema es que quiero desarrollar un programa que coja los mensajes
recibidos por el Outlook de una determinada dirección de correo y almacene
sus
archivos adjuntos. Como primer paso he hecho esto de abajo, pero produce un
error de ejecución del Visual Basic (No del código, sino del VB6.exe), en el
momento en que finaliza la rutina Main() (Después de pasar por "End Sub" y
antes de que haga nada más.). Todo lo demás funciona, básicamente escribe en
la pantalla de Inmediato del VB la dirección de correo de los remitentes de
la Bandeja de Entrada. Justo al salir, se produce el error. No lo entiendo,
no sé de donde viene el error ("La instrucción ...... hace referencia a la
dirección de memoria ..... La memoria no se puede "read". "). Quizás me esté
olvidando de algún detalle de memoria, no lo sé. En la instrucción de inicio
de sesión, no se produce ningún error. Si alguien me pudiera ayudar en esto
o a darme una idea de donde puede venir el error, lo agradeceria mucho.
Aquí queda el código:
Option Explicit
Private mSess1 As Object
Private mFold1 As MAPI.Folder
Private mMess1 As MAPI.Message
Sub Main()
Set mSess1 = CreateObject("MAPI.Session") ' New MAPI.Session ' Crea
un objeto de sesión MAPI.
mSess1.Logon , , False, False ' Inicia una sesión.
Set mFold1 = mSess1.GetDefaultFolder(CdoDefaultFolderInbox) '
Obtiene la Bandeja de Entrada del correo electrónico.
With mFold1.Messages ' Conjunto de mensajes de la carpeta.
Set mMess1 = .GetFirst
Do Until mMess1 Is Nothing
Debug.Print mMess1.Sender.Address ' Esta parte es de prueba,
escribe en la pantalla de Inmediato la dirección de correo del remitente.
Set mMess1 = .GetNext
Loop
End With
If Not (mMess1 Is Nothing) Then
Set mMess1 = Nothing
End If
If Not (mFold1 Is Nothing) Then
Set mFold1 = Nothing
End If
mSess1.Logoff ' Cierra la sesión.
If Not (mSess1 Is Nothing) Then
Set mSess1 = Nothing
End If
End Sub
1.21 Library (CDO.dll), la cual incluye el conjunto de objetos MAPI.
El problema es que quiero desarrollar un programa que coja los mensajes
recibidos por el Outlook de una determinada dirección de correo y almacene
sus
archivos adjuntos. Como primer paso he hecho esto de abajo, pero produce un
error de ejecución del Visual Basic (No del código, sino del VB6.exe), en el
momento en que finaliza la rutina Main() (Después de pasar por "End Sub" y
antes de que haga nada más.). Todo lo demás funciona, básicamente escribe en
la pantalla de Inmediato del VB la dirección de correo de los remitentes de
la Bandeja de Entrada. Justo al salir, se produce el error. No lo entiendo,
no sé de donde viene el error ("La instrucción ...... hace referencia a la
dirección de memoria ..... La memoria no se puede "read". "). Quizás me esté
olvidando de algún detalle de memoria, no lo sé. En la instrucción de inicio
de sesión, no se produce ningún error. Si alguien me pudiera ayudar en esto
o a darme una idea de donde puede venir el error, lo agradeceria mucho.
Aquí queda el código:
Option Explicit
Private mSess1 As Object
Private mFold1 As MAPI.Folder
Private mMess1 As MAPI.Message
Sub Main()
Set mSess1 = CreateObject("MAPI.Session") ' New MAPI.Session ' Crea
un objeto de sesión MAPI.
mSess1.Logon , , False, False ' Inicia una sesión.
Set mFold1 = mSess1.GetDefaultFolder(CdoDefaultFolderInbox) '
Obtiene la Bandeja de Entrada del correo electrónico.
With mFold1.Messages ' Conjunto de mensajes de la carpeta.
Set mMess1 = .GetFirst
Do Until mMess1 Is Nothing
Debug.Print mMess1.Sender.Address ' Esta parte es de prueba,
escribe en la pantalla de Inmediato la dirección de correo del remitente.
Set mMess1 = .GetNext
Loop
End With
If Not (mMess1 Is Nothing) Then
Set mMess1 = Nothing
End If
If Not (mFold1 Is Nothing) Then
Set mFold1 = Nothing
End If
mSess1.Logoff ' Cierra la sesión.
If Not (mSess1 Is Nothing) Then
Set mSess1 = Nothing
End If
End Sub