Enviando mensajes con MAPI
Por Roberto Martínez mapi.prg
Habría que decir mejor: “Envía mensajes con Simple
MAPI” ya que al que nos vamos a referir
es un subset de MAPI llamado simple Mapi que usa 12 funciones,
que permite a los desarrolladores añadir las funciones básicas de mensajería a
sus aplicaciones basadas en Windows. Simple MAPI incluye funciones para enviar
y recibir mensajes:
· Hacer un Log al Servidor.
· Componer nuevos mensajes, añadir y resolver
receptores, emnviar mensajes.
· Recuperar y leer mensajes desde la
bandeja de entrada.
Las funciones de Simple MAPI se pueden
invocar desde cualquier aplicación que soporte llamadas al API como C, C++,
Visual Basic, Fox y Visual Basic for Applications (VBA).
En
el caso de Visual FoxPro estas funcionalidades vienen encapsuladas en una .OCX
llamada MSMAPI32.OCX cuya ayuda la debes tener en algún lugar de tu disco duro
en el fichero llamado MAPI98.CHM
Aquí dentro tienes dos
controles MAPI:
·
MAPISession
·
MAPIMessages
El control MAPISession
inicia y establece una sesión MAPI. También se utiliza para terminar una sesión
MAPI. El control MAPIMessages permite al usuario realizar una gran
variedad de funciones del sistema de mensajería.
Con el control MAPIMessages se puede:
·
Tener acceso a los
mensajes actuales de la Bandeja de entrada.
·
Redactar un nuevo
mensaje.
·
Agregar y eliminar
destinatarios de mensajes y datos adjuntos.
·
Enviar mensajes (con o
sin interfaz de usuario).
·
Guardar, copiar y
eliminar mensajes.
·
Mostrar el cuadro de
diálogo Libreta de direcciones.
·
Mostrar el cuadro de
diálogo Detalles.
·
Tener acceso a datos
adjuntos, incluyendo los de Vinculación e incrustación de objetos (OLE).
·
Resolver un nombre de
destinatario durante el direccionamiento.
·
Efectuar acciones de
responder, responder a todos y reenviar mensajes.
Como más vale
un buen código que 1000 palabras, aquí te pongo uno que lo que hace es enviar
un mensaje con la opción de poder adjuntar un fichero o muchos. Lo tienes listo
para ejecutarlo (cortar y pegar en tu aplicación)
Local pcPara, pcAsunto, pcCuerpo,
paFichEnviar, plMostrarDialogo
IF EMPTY(pcPara)
pcPara
= "direccion@de_correo.es"
ENDIF
IF EMPTY(pcAsunto)
pcAsunto
= "<Asunto>"
ENDIF
IF EMPTY(pcCuerpo)
pcCuerpo
= ""
ENDIF
IF EMPTY(paFichEnviar)
paFichEnviar
= ""
ENDIF
LOCAL oform
oform = CreateObject("form")
oform.addobject("Session1","olecontrol","MSMAPI.mapiSession")
IF TYPE('oform.Session1') <> 'O'
MESSAGEBOX('No
se ha podido instanciar la aplicación de correo.', 64, 'Atención')
RELEASE
oform
RETURN
.F.
ENDIF
oform.addobject("Message1","olecontrol","MSMAPI.mapiMessages")
IF TYPE('oform.Message1') <> 'O'
MESSAGEBOX('No
se ha podido instanciar la aplicación de correo.', 64, 'Atención')
RELEASE
oform
RETURN
.F.
ENDIF
oform.Session1.LogonUI = .t.
*- Si no se pone la propiedad a
.F. y en OUTLOOK está puesto trabajar sin conexión
*- se cuelga
oform.Session1.DownloadMail=.f.
oform.Session1.signon
oform.Message1.sessionid =
oform.Session1.sessionid
oform.Message1.compose
oform.Message1.RecipDisplayName = pcPara
oform.Message1.msgsubject = pcAsunto
oform.Message1.msgnotetext = pcCuerpo
*- Si no es un array, lo crea
IF TYPE('paFichEnviar[1]') = 'U'
LOCAL
lcFileEnviar
lcFileEnviar
= paFichEnviar
DIMENSION
paFichEnviar(1)
paFichEnviar(1)
= lcFileEnviar
ENDIF
LOCAL lnContFiles
lnContFiles = 1
FOR lnCount = 1 TO ALEN(paFichEnviar,1)
*-
Si existen los archivos
IF
FILE(paFichEnviar(lnContFiles))
oform.Message1.AttachmentIndex =
lnContFiles - 1
oform.Message1.AttachmentPathName
= paFichEnviar(lnContFiles)
oform.Message1.AttachmentPosition
= lnContFiles - 1
lnContFiles
= lnContFiles + 1
ENDIF
ENDFOR
oform.Message1.send(plMostrarDialogo)
oform.Session1.signoff
release oform
FoxPress – Febrero de 2002
© 2002 FoxPress. All rights reserved