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

attachment, embedded-resource, mime

Solution

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

`Embedded` is not a valid value for the `Content-Disposition` header. `attachment` should be fine. `inline` should also be fine, though I've usually seen `attachment` for `multipart/related` embedded images.

The value of the `Content-ID` header is supposed to be in the same format as a message-id, which in turn looks very much like an email address. `<083.gif@yourmailer>` has a better chance of working with most mailers.

Problem

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.

Original source