2010-07-29 23 views
5

Muszę osadzić obrazy w wiadomościach e-mail i wyświetlić podgląd wiadomości e-mail przed jej wysłaniem w programie Outlook. CDO i Redemption nie są opcją.Osadzanie obrazu w Outlooku za pomocą rozszerzonych funkcji mapi

Próbowałem następujący kod, ale obrazy po prostu pojawiają się jako mały blok.

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

Czy w formacie HTML? Czy używasz adresu URL CID dla osadzonego obrazu? – Ben

+0

@Ben Czy powinien używać formatu HTML? Czy istnieje rozwiązanie z adresem URL CID? jestem pewien, że użyje cokolwiek otrzyma twoja odpowiedź - o ile używasz MAPI i działa, gdy klientem poczty e-mail użytkownika jest Outlook. –

+1

@IanBoyd, Oczekuję, że ** używa ** adresu URL CID * teraz o nich wie * ... – Ben

Odpowiedz

1

Piszący nie opublikował swojego tekstu HTML. Podejrzewam, że problem polega na tym, że jego adresy URL w CID były źle sformułowane - nawet jeśli nie testowałem tego.

Jeśli nagłówek Content-ID jest ustawiony na to:

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

Następnie HTML powinien odwoływać się do niej tak:

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

W szczególności URL cid muszą mieć przedrostek „cid : "ale nagłówek content-id nie może. (Identyfikator jest dobrym wyborem dla identyfikatora treści, z tym wyjątkiem, że MUSI zawierać symbol @. Aby to zrobić, możesz dodać "@u" do identyfikatora.)

To wystarcza, aby poprawnie wyświetlić ekran e-mail na końcu przyjmującym. Niezależnie od tego, czy sprawi, że będzie on prawidłowo wyświetlany przed wysłaniem, nie wiem.

Możesz spróbować również zobaczyć to pytanie:

+0

Two + 1's dla ciebie, proszę pana. –