2010-07-29 9 views
5

Ho bisogno di incorporare le immagini in una e-mail e visualizzare in anteprima l'e-mail prima che venga inviata in Outlook. CDO e Redenzione non sono un'opzione.Incorpora l'immagine in Outlook utilizzando le funzioni mapi estese

Ho provato il seguente codice, ma le immagini appaiono solo come un piccolo blocco.

procedure AddAttachment(FullFileName: String; Attachments: Outlook2000.Attachments; CID: String); 
    const 
    PR_ATTACH_CONTENT_ID = $3712001E; 
    PR_ATTACH_CONTENT_ID_W = $3712001F; // Unicode 
    PR_ATTACH_MIME_TAG  = $370E001E; 
    PR_ATTACH_ENCODING  = $37020102; 
    var 
    IAttach: IMAPIProp; 
    Prop: PSPropValue; 
    AAttachment: Outlook2000.Attachment; 
    FileName: String; 
    PropValue: TSPropValue; 
    Prop1: TSPropTagArray; 
    begin 
    FileName := ExtractFileName(FullFileName); 
    Prop := nil; 
    try 
     AAttachment := Attachments.Add(FullFileName, olByValue, 1, FileName); 
     IAttach := AAttachment.MAPIOBJECT as IMAPIProp; 
     if Assigned(IAttach) then 
     try 
      PropValue.ulPropTag := PR_ATTACH_MIME_TAG; 
      PropValue.Value.lpszA := 'image/jpeg'; 
      HrSetOneProp(IAttach, @PropValue); 
      PropValue.ulPropTag := PR_ATTACH_CONTENT_ID; 
      PropValue.Value.lpszA := PAnsiChar(AnsiString(CID)); 
      HrSetOneProp(IAttach, @PropValue); 
     finally 
      if Assigned(Prop) then MAPIFreeBuffer(Prop); 
      IAttach := nil; 
     end; 
    except 
    end; 
    end; 
+0

Si sta utilizzando il formato HTML? Stai usando un URL CID per l'immagine incorporata? – Ben

+0

@Ben Dovrebbe usare il formato HTML? C'è una soluzione che coinvolge un URL CID? sono sicuro che userà qualsiasi cosa dia la tua risposta, a patto che tu stia usando MAPI e funzioni quando il client di posta elettronica dell'utente è Outlook. –

+1

@IanBoyd, mi aspetto che ** sia ** utilizzando un URL CID * ora ne sa di loro * ... – Ben

risposta

1

L'utente non ha pubblicato il suo testo HTML. Sospetto che il problema sia che i suoi url del CID erano malformati - a parte il fatto che non l'ho provato.

Se l'intestazione Content-ID è impostato su questo:

Content-Type: image/jpeg 
Content-Disposition: inline 
Content-ID: [email protected] 

Poi l'HTML dovrebbe fare riferimento in questo modo:

<img width="100" height="100" href="cid:[email protected]" /> 

In particolare, l'URL cid deve avere il prefisso "cid : "ma l'intestazione content-id non deve. (Un guid è una buona scelta per un content-id, tranne che DEVE contenere un simbolo @. Per aderire, è possibile aggiungere '@u' al guid.)

Ciò è sufficiente per visualizzare correttamente l'e-mail alla fine ricevente. Non so se renderà l'anteprima in Outlook correttamente prima dell'invio.

Si potrebbe desiderare di vedere anche questa domanda:

+0

Due + 1 per te, signore. –