2010-07-29 13 views
5

necesito para incrustar imágenes en un correo electrónico y una vista previa del correo electrónico antes de que se envíe en perspectiva extendida. CDO y redención no es una opción.Insertar imagen para Outlook utilizando funciones MAPI

He probado el siguiente código, pero las imágenes solo aparece como un pequeño bloque.

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

¿Está utilizando formato HTML? ¿Estás usando una URL CID para la imagen incrustada? – Ben

+0

@Ben ¿Debería usar el formato HTML? ¿Hay alguna solución que involucre una URL CID? Estoy seguro de que vamos a usar lo que sea su respuesta da - siempre y cuando usted está utilizando MAPI y funciona cuando el cliente de correo electrónico del usuario es Outlook. –

+1

@IanBoyd, espero que ** ** es el uso de una dirección URL CID * ahora sabe acerca de ellos ... * – Ben

Respuesta

1

Interlocutor no ha publicado su texto HTML. Sospecho que el problema es que sus direcciones URL CID estaban mal formadas, aunque nunca he probado esto.

Si la cabecera Content-ID se establece en esto:

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

A continuación, el código HTML debería hacer referencia a él de este modo:

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

En particular, la URL cid debe tener el prefijo "cid : "pero el encabezado content-id no debe. (Un guid es una buena opción para un id de contenido, excepto que DEBE contener un símbolo @. Para cumplir, puede agregar '@u' al guid.)

Eso es suficiente para que el correo electrónico se visualice correctamente en el extremo receptor. Si lo hará una vista previa en perspectiva correctamente antes de enviarlo, no lo sé.

Es posible que desee ver también esta pregunta:

+0

Dos + 1 para usted, señor. –

Cuestiones relacionadas