Cómo crear un correo electrónico con imágenes incrustadas que sea compatible con la mayoría de los clientes de correo

Hemos creado un sistema que permite incrustar una imagen en un correo electrónico saliente.

Aquí está el mensaje original que nuestro sistema crea. Este ejemplo contiene una imagen adjunta y una imagen incrustada.

Mime-Version: 1.0 From: ... To: ... CC: Subject: test x-sender: ... x-mailer: ... Content-Type: multipart/mixed; boundary="-------------...A128803765634794" ---------------...A128803765634794 Content-Type: multipart/related; boundary="-------------...B128803765634796" ---------------...B128803765634796 Content-Type: text/html; charset="UTF-8" 

---------------...B128803765634796 Content-type: image/gif; name="083.gif" Content-ID: X-Attachment-Id: 083.gif Content-Disposition: Embedded; filename="083.gif" Content-transfer-encoding: base64 ............................................................................ ............................................................................ ...................................................... ---------------PineappleCodeB128803765634796-- ---------------PineappleCodeA128803765634794 Content-type: image/gif; name="waiting.gif" Content-Disposition: Attachment; filename="waiting.gif" Content-transfer-encoding: base64 ............................................................................ ............................................................................ ...................................................... ---------------PineappleCodeA128803765634794--

¿Hay algún otro encabezado que deba agregar o que deba seguir?

Noté una cosa … supongo que es parte de mi problema y parte de Gmail. pero de todos modos me gustaría que deje de suceder

Cuando recibo el correo electrónico en Gmail, recibo

Las imágenes no se muestran.
Muestre las imágenes a continuación: siempre muestre imágenes desde …

La imagen incrustada se muestra como un archivo adjunto de imagen (al igual que mi otro adjunto de imagen)

Hago clic en Mostrar imágenes a continuación y mi imagen se muestra en el cuerpo del correo electrónico, pero no se elimina de la sección Archivos adjuntos.

Si vuelvo a mi casilla de entrada y regreso al correo electrónico, se ve bien.

No veo por qué lo hace. No es una imagen vinculada (desde una URL externa) y no ocurre cuando se envían imágenes incrustadas de Gmail a Gmail. Eso es lo que me hace pensar que podría estar haciendo algo mal y me temo que puede afectar a otros destinatarios.

He tenido éxito con exactamente los mismos encabezados que usa, con las siguientes diferencias:

  • Embedded no es un valor válido para el encabezado Content-Disposition . attachment debería estar bien. inline también debería estar bien, aunque generalmente he visto attachment para imágenes integradas multipart/related .

  • Se supone que el valor del encabezado Content-ID está en el mismo formato que un ID de mensaje , que a su vez se parece mucho a una dirección de correo electrónico . <083.gif@yourmailer> tiene una mejor oportunidad de trabajar con la mayoría de los <083.gif@yourmailer> .

Tenía problemas para cargar imágenes en línea en Gmail y descubrí que estaba utilizando mal la biblioteca PEAR Mail_Mime en PHP. Como ya se mencionó, Content-ID debe formatearse como una identificación de mensaje. La biblioteca PEAR Mail_Mime intentará agregar un domainID a su Content-ID si no se proporciona uno. También intentará regex reemplazar estos Content-ID en el cuerpo HTML del correo electrónico para mantener el enlace. En mi caso, este paso estaba fallando y terminó rompiendo el enlace de la etiqueta HTML al adjunto MIME. Por lo tanto, era perfectamente correcto que Gmail se negara a mostrar la imagen en línea. Sin embargo, mostró la imagen como un archivo adjunto.

    Intereting Posts