2011-12-11 19 views
7

Quiero crear un correo con archivo adjunto en Outlook y mostrarlo antes de enviarlo, pero creo que he probado casi todas las muestras que he encontrado en la red sin suerte. Podría usar Indy, pero me gustaría utilizar Outlook para asegurarme de que el correo sea adecuado porque es para uso comercial.Crear un correo con archivo adjunto en Outlook y mostrarlo

Cualquier entrada para una función que toma Dirección, asunto, mensaje y datos adjuntos como parámetros y luego muestra el mensaje en Outlook antes de enviarlo.

Respuesta

14

Ver MailItem.Display Method.

uses 
    comobj; 

.. 

procedure DisplayMail(Address, Subject, Body: string; Attachment: TFileName); 
var 
    Outlook: OleVariant; 
    Mail: Variant; 
const 
    olMailItem = $00000000; 
begin 
    try 
    Outlook := GetActiveOleObject('Outlook.Application'); 
    except 
    Outlook := CreateOleObject('Outlook.Application'); 
    end; 
    Mail := Outlook.CreateItem(olMailItem); 
    Mail.To := Address; 
    Mail.Subject := Subject; 
    Mail.Body := Body; 
    if Attachment <> '' then 
    Mail.Attachments.Add(Attachment); 
    Mail.Display; 
end; 

procedure TForm1.Button1Click(Sender: TObject); 
begin 
    DisplayMail('mailaddress', 'subject', 'message', 'attachmentfile'); 
end; 
+0

No estoy seguro todavía de lo que he estado haciendo mal porque es más o menos el mismo código que he estado usando pero sin suerte. Su código por otro lado funciona. Me pregunto si tiene algo que ver con el hecho de que he estado usando Outlook_TLB, pero no veo qué debería hacer. ¿Sabe si es posible agregar el recibo de lectura de solicitud y el recibo de entrega al código? – OZ8HP

+1

Para la solicitud de lectura de recibo, consulte la propiedad ['ReadReceiptRequested'] (http://msdn.microsoft.com/en-us/library/ff865400.aspx) y úselo como' Mail.ReadReceiptRequested: = True; ' – TLama

+1

.. y 'OriginatorDeliveryReportRequested' propety. –

Cuestiones relacionadas