How to create an email with embedded images that is compatible with the most mail clients

Bryan Field picture Bryan Field · Oct 25, 2010 · Viewed 50.2k times · Source

We have created a system that allows embedding an image in an outgoing email.

Here is the original message our system creates. This example contains an image attachment and an embedded image.

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"

<p style="margin: 0; padding: 0"><img src="cid:083.gif" alt="" /></p>

---------------...B128803765634796
Content-type: image/gif; name="083.gif"
Content-ID: <083.gif>
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--

Is there another header I should add or rule I should follow?

I noticed one thing... I would guess that it is part my issue and part Gmails. but at any rate I would like to make it stop happening

When the email is received into Gmail I get

Images are not displayed.
Display images below - Always display images from ...

The embedded image is then shown as an image attachment (just like my other image attachment)

I click Display Images Below and my image is shown in the body of the email but not removed from the Attachments section.

If I go back to my in box and back to the email it looks fine.

I do not see why it does that. It it not a linked image (from external URL) and it does not happen when sending embedded images from Gmail to Gmail. That is what makes me think I might be doing somthing wrong and I am afraid that it may affect other recipients.

Answer

dkarp picture dkarp · Jan 15, 2011

I've had success with exactly the same headers as you're using, with the following differences: