FoxPress – Febrero 2002

 

Enviando mensajes con MAPI

 

http://www.fpress.com/

 

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