2010-07-29 7 views
5

Je dois intégrer des images dans un e-mail et prévisualiser l'e-mail avant de l'envoyer dans Outlook. CDO et Redemption n'est pas une option.Intégrer l'image à Outlook en utilisant des fonctions mapi étendues

J'ai essayé le code suivant, mais les images apparaissent simplement comme un petit bloc.

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

Utilisez-vous le format HTML? Utilisez-vous une URL CID pour l'image incorporée? – Ben

+0

@Ben Devrait-il utiliser le format HTML? Existe-t-il une solution impliquant une URL CID? Je suis sûr qu'il utilisera tout ce que votre réponse donne - tant que vous utilisez MAPI et cela fonctionne lorsque le client de messagerie de l'utilisateur est Outlook. –

+1

@IanBoyd, je suppose qu'il ** est ** en utilisant une URL CID * maintenant il sait à leur sujet * ... – Ben

Répondre

1

Le questionneur n'a pas posté son texte HTML. Je soupçonne que le problème est que ses URL CID ont été malformées - mais je n'ai pas testé cela.

Si l'en-tête Content-ID est défini à ceci:

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

Ensuite, le code HTML doit faire référence comme ceci: En particulier,

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

l'URL cid doit avoir le préfixe « cid : "mais l'en-tête content-id ne doit pas. (Un guid est un bon choix pour un id de contenu, sauf qu'il DOIT contenir un symbole @. Pour être conforme, vous pouvez ajouter '@u' au guid.)

Cela suffit pour afficher correctement l'e-mail à la fin de réception. Je ne sais pas s'il le fera prévisualiser correctement dans les perspectives avant de l'envoyer.

Vous pouvez voir aussi cette question:

+0

Deux + 1 pour vous, monsieur. –

Questions connexes