{ =============================================================================== Copyright (©) 2001. Rodax Software. =============================================================================== Los contenidos de este fichero son propiedad de Rodax Software titular del copyright. Este fichero sólo podrá ser copiado, distribuido y utilizado, en su totalidad o en parte, con el permiso escrito de Rodax Software, o de acuerdo con los términos y condiciones establecidas en el acuerdo/contrato bajo el que se suministra. ----------------------------------------------------------------------------- Web: www.rodax-software.com =============================================================================== Fecha primera versión: 02-02-2005 Versión actual: 1.0.0 Fecha versión actual: 02-02-2005 =============================================================================== Modificaciones: Fecha Comentarios --------------------------------------------------------------------------- =============================================================================== } unit Correo; interface uses Classes; type TDatosCorreo = class(TPersistent) public Direcciones : TStringList; Asunto: String; Cuerpo : String; Adjuntos : TStringList; constructor Create; destructor Destroy; override; end; procedure enviarCorreo(Const Datos: TDatosCorreo); implementation uses Sysutils, StrFunc, ComObj, OutlookXP; procedure enviarCorreo(Const Datos: TDatosCorreo); const olMailItem = 0; olByValue = 1; var OutlookApp, MailItem, MyAttachments: OLEVariant; i: Integer; Nombre: String; begin //Comprobamos que halla datos para enviar if Datos = Nil then exit; try OutlookApp := GetActiveOleObject('Outlook.Application'); except OutlookApp := CreateOleObject('Outlook.Application'); end; try MailItem := OutlookApp.CreateItem(olMailItem); for i:=0 to Datos.Direcciones.Count - 1 do if not EsCadenaVacia(Datos.Direcciones.Strings[i]) then MailItem.Recipients.Add(Datos.Direcciones.Strings[i]); MailItem.Subject := Datos.Asunto; MailItem.Body := Datos.Cuerpo; myAttachments := MailItem.Attachments; for i:=0 to Datos.Adjuntos.Count - 1 do begin Nombre := copy(Datos.Adjuntos.Strings[i], LastDelimiter('\', Datos.Adjuntos.Strings[i])+1, length(Datos.Adjuntos.Strings[i])); myAttachments.Add(Datos.Adjuntos.Strings[i], olByValue, 1, Nombre); end; // OutlookApp.WindowState := olNormalWindow; MailItem.Display; //MailItem.Send; finally myAttachments := VarNull; OutlookApp := VarNull; end; end; { TDatosCorreo } constructor TDatosCorreo.Create; begin inherited Create; Direcciones := TStringList.Create; Adjuntos := TStringList.Create; end; destructor TDatosCorreo.Destroy; var i: Integer; begin //limpiamos los fichero temporales for i:=0 to Adjuntos.Count - 1 do begin DeleteFile(Adjuntos.Strings[i]); end; FreeAndNil(Direcciones); FreeAndNil(Adjuntos); inherited; end; end.