The answer to Mail multipart/alternative vs multipart/mixed suggests that attachments should be peers of the multipart/alternative
message, like:
I'd like to send email with an html part with some inline images and a plain text alternative. What is the preferred MIME layout for the various parts? A couple of options appear in example code and in other questions, but which have worked best in practice? My inclination is this:
That way, the images are clearly for the purpose of rendering the html part. A full example of this would be:
From: Rich Example <[email protected]> To: A Recipient <[email protected]> Subject: An example of email with images and a plain alternative MIME-Version: 1.0 Content-Type: multipart/alternative; boundary="outer-boundary" This is a MIME-encoded message. If you are seeing this, your mail reader is old. --outer-boundary Content-Type: text/plain; charset=us-ascii This message might make you :) or it might make you :( --outer-boundary MIME-Version: 1.0 Content-Type: multipart/related; type="text/html"; start="<body@here>"; boundary="inner-boundary" --inner-boundary Content-Type: text/html; charset=us-ascii Content-Disposition: inline Content-ID: <body@here> <html> <body> This message might make you <img src="cid:smile@here" alt="smile"> or it might make you <img src="cid:frown@here" alt="frown"> </body> </html> --inner-boundary Content-Type: image/gif Content-Disposition: inline Content-Transfer-Encoding: base64 Content-ID: <smile@here> R0lGODlhEAAQAKEBAAAAAP//AP//AP//ACH5BAEKAAIALAAAAAAQABAAAAIzlA2px6IBw2 IpWglOvTahDgGdI0ZlGW5meKlci6JrasrqkypxJr8S0oNpgqkGLtcY6hoFADs= --inner-boundary Content-Type: image/gif Content-Disposition: inline Content-Transfer-Encoding: base64 Content-ID: <frown@here> R0lGODlhEAAQAKEBAAAAAAD//wD//wD//yH5BAEKAAIALAAAAAAQABAAAAIzlA2px6IBw2 IpWglOvTahDgGdI0ZlGW5meKlci75drDzm5uLZyZ1I3Mv8ZB5Krtgg1RoFADs= --inner-boundary-- --outer-boundary--
Two primary MIME types are important for the role of default types: text/plain is the default value for textual files. A textual file should be human-readable and must not contain binary data. application/octet-stream is the default value for all other cases.
A MIME type (or media type) is an identifier for file formats or format contents on the Internet. MIME stands for Multipurpose Internet Mail Extensions and all MIME types are officially maintained by the Internet Assigned Numbers Authority (IANA).
I don't know how are you sending email from HTML, but all you have to do is to set header to Content-Type: text/plain;" instead of Content-Type: text/html;" . Then your email content will be sent as plain text without any parsing.
Look for a <meta> element in the page source that gives the MIME type, for example <meta http-equiv="Content-Type" content="text/html"> .
You are right. Inline images should be stored in a multipart/related
mime-entity (RFC 2387) and offering multiple content-type options can be done with multipart/alternative
(RFC 2046).
For adding attachments you may put the whole structure into a multipart/mixed
and add the attachments.
You can also use inline image in text/plain messages, but not all MUA support this. (Use none or disposition: inline)
And I dont't know a clean way to combine this with a multipart/alternative HTML-email.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With