miércoles, 22 de abril de 2015

Envío email a traves de librerias outlook


Con esta función se consigue enviar un correo utilizando las librerias de outlook. existen varias opciones tanto de formato como de tipo de envio ya sea enviado directamente o levantando el cliente Outlook para comprobar antes de enviar. Para ello primero vamos a crear dos variables locales tipo automation asignando librerias de Outlook.

    - OMail Automation 'Microsoft Outlook 9.0 Object ibrary'.MailItem
    - OApp Automation 'Microsoft Outlook 9.0 Object ibrary'.Application



En este caso se ha puesto la versión 9.0 porque es la versión que tengo instalada en mi equipo. Es necesario que todos los equipos desde donde se va lanzar esta función tengan instalada mínimo la misma versión con la que se han definido las variables. No habría problema con los equipos que tengan instalada una versión superior de las librerías ya que leerían las dll perfectamente no asi los equipos con versiones anteriores.


la funcion creada tiene varios parámetros :
eMail - dirección de correo del o de los destinatarios.
RutaPlantilla - Es la ruta al fichero de plantilla con la que abrir el correo.
RutaYFichero - Ruta del documento adjunto.
MostrarCorreo - Es un booleano para determinar si queremos o no levantar el cliente Outlook antes de enviar el correo

IF ISCLEAR(OApp) THEN
  CREATE(OApp,FALSE,TRUE);
//OMail := OApp.CreateItem(0); //Si NO utilizamos plantillas
OMail := OApp.CreateItemFromTemplate(rutaplantilla); //Si se usan plantillas
OMail."To":=eMail;
IF RutayFichero <> '' THEN
  OMail.Attachments.Add(RutayFichero); //Si queremos adjuntar un fichero
OMail.Subject :=Asunto;
//OMail.Body := ‘El cuerpo del mensaje’; //O ponemos este código o el de la plantilla.
//OMail.OriginatorDeliveryReportRequested := TRUE; //Confirmación de recepción.
//OMail.ReadReceiptRequested := TRUE; //Confirmación de lectura.
IF MostrarCorreo=TRUE THEN
  OMail.Display //levanta el cliente correo si no se llama a esta funcion envai el correo                 directamente.
ELSE
OMail.Send;