/Mixed-ing it up: Multipart/Mixed Messages and You

Greetings, Exchange Administrators! In today’s edition of “and You”, we’ll be covering Exchange’s handing of messages generated by iPhones, iPads, and Macintosh Mail clients. Specifically, we’re going to cover what /mixed content body messages are, how Exchange handles them now, and how we handle them down the line. Before we can dive into the content, you first have to understand how internet messages are structured, and that means learning a little bit about how Exchange stores messages, and quite a bit about MIME. Not the mute freaks – Multipurpose Internet Mail Extensions, also known as “The Mime not everyone hates.”

Exchange, Messages, and LOL Cats

Exchange stores messages as a series of properties, where each property has a name and a value. For instance, PR_SUBJECT is the subject property, and “Test Message” is the value. Messages in Exchange have one body with multiple forms of representing it (HTML, Rich Text and Plain text).

The HTML view of the body looks like so:

This is a cat.

Image of LOL cat

Do Not Want

The RTF (rich text format) view of the same body is also capable of containing both formatting and images, and so would look like:

This is a cat.

<Mentally insert picture of cat here – it’s only eight lines up, so honestly, you can do it. >

Do Not Want

The plain text version of the body is composed of plain text, a fact that should be obvious based on its name. A good way of simulating plain text body generation is to paste your content into notepad. If it survives the paste into notepad, it will be part of the plain text. Sadly, the cat picture does not:

This is a cat.

Do Not Want

Messages in Exchange can have multiple attachments. This is good, because even if Exchange is forced to generate a plain text version of the body, the cat picture can come along so that should you decide to click it, you can view a picture of a cat which does not want something.

Key points for non technical and allergic to cats people: For Exchange, messages can have one body and can have many attachments.

And in this corner, MIME

MIME is a plain text format for email messages. MIME messages are divided into “parts”, each of which might have content or even child parts, like a series of Russian dolls. Each MIME part (even the root part, or the message itself) has a header called Content-Type, which describes the type of content in the part. Content type is divided into major parts and minor parts, separated by a slash. For example, consider the content-types multipart/alternative or multipart/mixed. Every part has a type, even going so far as to define a Miranda type for parts which can’t afford to assign one (text/plain).

Sometimes the types are quite helpful at understanding the meaning of the content, sometimes not so much. For instance, Content-Type: Application/PDF – that one means that it is Adobe’s Portable Document Format. On the other hand, Content-Type: application/octet means “I can’t tell what this is. Here’s a binary blob for your troubles. Hopefully you can figure out what to do with it”

Multipart/ is a general type, meaning that this MIME part may contain many child MIME parts. The sub type of the part (the part after the slash) tells us more about the child parts, and in this case, how they are related to each other. Now we will take a closer look at some of the multipart sub types to see where things can go wrong.


First off we’re going to look at Multipart/related, (also called a “related” body part). Related, in this case, means that the sub MIME parts are actually related to each other – in other words, that give the following MIME structure:

1. Multipart/related
     1.1. Text/HTML
     1.2. Image/Gif

That 1.1 and 1.2 are not meant to be interpreted as “separate” parts – they have meaning as one. In this case the html contains image links to the 1.2 image (our friend the cat).

Key point for non technical and allergic to cats people: Multipart/Related means “We belong together.”


Multipart/alternative means that each child of this part is a different representation of the same data. They are “Alternative” versions of each other. The intention is that a client picks the type that it can best display and displays that one. So given this mime structure:

1. Multipart/alternative
          1.1.1. Text/Plain
          1.1.2. Text/Html
          1.1.3. Application/Pdf

The client doesn’t have to show the text/plain part as the body. No, if the client knows how to display a text/html body, it is free to do that.

So multipart/alternative is a way of grouping a number of different formats of the same data together and letting the client decide which one it shows best – it’s like kid’s beauty pageant, except that instead of the ladies from the rotary club, you have the email client as the judge.

Key point for non technical and allergic to cats people: Multipart/Alternative means “Pick the one you like best.”

Mixed Up

Multipart/Mixed, according to RFC 1521, means that the parts are completely independent of each other (not related to each other) but that their order matters. What is the expected behavior? “Clients usually display the parts one after the other.”

This, however, brings into play another parameter on the MIME part – Content-Disposition. This parameter has a couple of normal values – Inline and Attachment. Attachment is easy to understand – in the context of Exchange, it means “Show me in the well, that I may be blocked by Outlook from being saved or opened.” Inline, on the other hand, we handle differently. Remember that whole “messages have one body, and maybe many attachments” thing? Keep that in mind while we look at how our Cat message looks like with a /mixed body:

1. Multipart/Mixed
     1.1. Text/Html – Inline
     1.2. Application/Gif – Inline
     1.3. Text/Html – Inline

And the intention among clients that generate this is that the receiving client should display the text/html part first and then glob on the image to the end of it, and then the rest of the body. There’s no limit to multipart/madness, you can combine them (and dispositions) into nigh endless combinations. For example:

2. Multipart/Mixed
     2.1. Text/Html -Inline
     2.2. Image/Gif -Inline
     2.3. Text/Html -Inline
     2.4. Text/Plain -Inline

Means “Show 2.1, followed by the image from 2.1 then the html from 2.3 and then the text from 2.4. Do it NOW.”

3. Multipart/Mixed
     3.1. Text/HTML -Inline
     3.2. Image/Gif –Attachment
     3.3. Text/Html –Inline
     3.4. Text/Plain –Attachment

Means “Show the text from 2.1, NOT the attachment from 3.2 unless someone does something, the text from 3.3, but NOT the text in 3.4 (unless they do something like click an attachment in the well).

The problem, of course, comes from Exchange’s original definition of a message – one body (with multiple representations), maybe many attachments.

Key point for non technical and allergic to cats people: Multipart/Mixed can mean “Maybe show all of these, in the order listed.”

Combo #5

MIME Types are not exclusive. I can combine Multipart/Mixed, Multipart/Alternative and Multipart/Related into a single message, and actually have a meaning

1. Multipart/Mixed
     1.1. Multipart/Alternative
           Image/Gif – inline
     1.2. Image/Jpeg – attachment

Yes, this structure is legal. And it is meaningful. To understand this you unwrap in order, one level at a time.

Multi Mixed – this message is different parts, put together, and the order matters.

Multipart/Alternative- I have two children, pick the prettier one and show it off.

          Text/Plain – I am a blob of plain text

          Multipart/Related – My children are bits and pieces of each other

                    Text/HTML – Pretty, Pretty Text.

                    Image/Gif – I am a picture of a cat, referenced by pretty, pretty text, I hope.

Image/Jpeg – I’m an attachment (in case you couldn’t see the picture of the cat above).

Exchange has always dealt well with multipart/alternative bodies, picking the one which we can best support and promoting it. We deal well with multipart/related as well – not every attachment on a message is visible – attachments have a disposition, which is either not set, inline or attachment. Setting neither indeterminate – the client does what the client does (and good luck establishing an algorithm that works for everyone). On the other hand, messages with /mixed content bodies where multiple parts are inline, those do not work so well.

Blender’d Messages

In the case of /mixed bodies, there are multiple MIME parts which are meant to combine together like Japanese robots to form Voltron, or an image of a cat and some text. Today, if you receive such a message, we do the best we can with it (which is pretty dis-satisfying): We pick the first “body type part” – aka, a text/<something> part, and that one becomes the body as seen by Outlook. All of the rest of them, those are attachments and we shove them into the attachment well. Oh, sure they might have a disposition of inline, but because the most common usage of inline is in HTML, we actually check, and anything that isn’t referenced by a link from the body, we won’t be fooled by. Into the well it goes.

From an Outlook perspective you get the first part of the message, then two attachments, one of which is the picture and the other is the trailing text. You are welcome to open the attachments in order, and combine them in your head to form a message, but once you get more than a couple parts it isn’t reasonable.

Exchange has never supported “proper” display of /mixed body messages in OWA or Outlook, until now.

Blended Messages

Starting with Exchange 2007 service pack 3 roll up 3 (E12SP3RU3) and Exchange 2010 service pack 1 rollup 4 (E14SP1RU4) are a set of changes to how Exchange handles /mixed body messages. We think that in general your users will enjoy the less mangled nature of these messages, but if I’ve learned anything from fourteen years of working on Exchange, it’s that “different == angry”. People get used to our behavior, so even when it’s wrong (or incomplete) they expect the same behavior, and come to rely on it. Consider this is your fair warning that this change is coming, some details on how it works, where it works, and where it doesn’t.

We’re adding support for Exchange to combine multiple body parts into a single, aggregate body. The short of this is that broken up messages should show combined together, and readable in OWA and Outlook. There are, however, limitations to this.

First off, right now this will only work for message generated by Apple iPods, iPads, or Apple Mail clients. This isn’t an accident – we developed the rules used to combine these bodies using test data from our counterparts at Apple, and while we handle messages by them well, the internet is wide and wondrous, and anyone can write messages with multipart/mixed bodies. For now this is restricted to clients we have good test data on, good rules for and a good way to identify.

To create the aggregate body, we check each MIME part in the /mixed body. If a MIME part has a disposition of Attachment, it goes to the attachment well. I am not going to argue with a client that specifies that it is an attachment. If a body part has a disposition of inline or not set, if it is a plain text or html body part, we add it to the aggregate body. If the body part is an image which can be displayed inline, we add a link to it in the aggregate body. If the body part is not text, or is an image we can’t display inline, it goes to the well.

How do I know if this breaks me? If you’re the owner of an application which is used to sending in /mixed content messages with MIME parts that you rely on Exchange treating as well attachments, and you send them from an Apple platform, and you haven’t been setting a content disposition, and the parts are text or image types (and you are setting content type), then you need to add a Content-Disposition to the MIME parts you want to be attachments, and set them to Attachment. If you’re a normal consumer wondering why messages with images or signatures got split into pieces, you don’t need to do anything.


Today we’ve covered different MIME structures, different representations of bodies, dispositions, types, and a host of other things, but the hard boiled summary is that mail between Apple clients and Exchange clients will be handled better. The best case scenario isn’t that your users call up and say “Wow, I’m really impressed that the messages I got from John on his Mac aren’t chopped up into a dozen pieces anymore.” The best case scenario is that things just work. No one has to call anyone, because you neither notice nor care what platform the message came from, or what format it was sent in. You can see your email, your signatures, and yes, your LOL cats. Enjoy!

Epilogue: How things went wrong

Already I’ve read (and responded to) reports on the Exchange Update Forums that this new code introduced a new problem. PDF attachments from Mac clients which declare their disposition to be Inline aren’t visible in the attachment well. Visible in Outlook Web Access, yes, but MAPI, no.

So how on earth did this happen? And how did we miss this bug? (“Do you do any quality control?” as one person asked.) The answer to this is yes, we do. But rather than just say that, let’s look at the journey we took to get this fix included in a rollup, what the problem is, how we missed it, and what we’re doing about it.

This fix begins with a conference call between me, a few team mates, and our counterparts at Apple, in which someone asked “Well, can you guys do anything to actually support this style of message body?” I spent the next few days researching what it would take to build a synthetic body out of the parts and eventually concluded that it would be possible. With that we began the discussions of “Why now?” and “What is it going to take?” That phase took quite a while. The core problem was that we were well aware that producing a new type of body was going to require a large investment in testing. Eventually we concluded that we could and would do it.

And we did. We wrote the code that supports this type of body, we wrote the code that tests it. We have a huge number of tests that test various types and formats of bodies. We had only the new ones to test the new body. Line for line there’s more code to test this than there’s to support it. So the fix was done, the code was tested, but we still weren’t ready to check in the code. Instead, we took a much more cautious approach. The fix was available as an interim update and that interim update was tightly controlled since we wanted it to go to customers who would be putting it into daily use. After a month or so we loosened it up and the fix went out to four more customers, eventually being in play at around 12 customers for about three months. After three months of field deployment with positive results, we decided to schedule it for a rollup (which should’ve been RU2, but wound up being RU3).

But there’s a problem. You see, Exchange 2007 and 2010 don’t pay much attention to Content-Disposition, because for years inline has been a great way to make sure the attachment is essentially invisible (an inline attachment has its hidden property set to true, since it is displayed inline with body content). And the test code missed this case – it’s an inline attachment which can’t be displayed inline by Exchange, but in a message which contains multiple body parts which can be merged to build the synthetic body. Unfortunately neither our in-house nor field testing encountered this.

The bug is that in processing these messages, we honor attachment disposition in a case where we should not. Any attachment which can’t be displayed inline should never be allowed to become part of the synthetic body. We know of two types of attachments – TIFF and PDF, which can be displayed inline on Mac clients but not on Windows clients. The fix for these two also fixes any other types where the client might render inline but we can’t.

How did we miss this? We went back over our test code and test data and said “It contains PDFs, and validates the attachment well status.” It does indeed (and TIFFs as well). It also doesn’t ever attempt to create a PDF attachment and render it inline in the body. That’s the missed case which I certainly wish we had found before it ever hit any customers.

So to resolve this we’re creating an interim update, and we’ll be rolling it into the main branch to prevent further incidents of this. Over time I expect that we’ll expand the number of mailers we produce synthetic bodies for. For now, I think this experience has validated that we should keep it limited and expand support where we can closely test. I remain convinced that improving interop between Mac clients and Exchange is a good idea.

So there we have it: The problem, the fix, the problem with the fix, and the fix for the problem with the fix. We now return to your regularly scheduled blog.

Jason Nelson

Comments (19)
  1. So the question is: when will E2010SP1RU4 be released and will it include the fix for the fix? Christian

  2. Steve Maser says:

    Thanks for this.    Does this explain why Outlook 2010 also has problems dealing with  in-line attachments that are *not* going through an Exchange server (ie, if Outlook 2010 is configured to use a non-Exchange IMAP server…)

    If so, will there be a fix for Outlook 2010 coming soon?

  3. xC0000005 says:

    @Christian – I cannot speak to the timetable for RU4 (2k7, 2k10) but both are slated to include the fix.  Note that E2k10 RU3 did NOT contain this fix.  Ru4 will (as well as the update to prevent the PDF issue).  

    @Steve – I have reported this to the Outlook team, but I cannot speak for them on what they have or have not fixed. Sorry.

  4. usftork says:

    Does RU3 for EXCH 2010 SP1 introduce the same issue (inline pdf's) as RU3 for EXCH 2007 SP3?

  5. Chris K says:

    Thanks for such a detailed and funny explanation.

  6. Steve_.K says:

    Great writeup. I appreciate the effort you put forth to add this new functionality.

  7. Liran Zamir says:

    This is very upsetting. I have an open case regarding this issue as it impact one of our customers.

    I'm waiting for a fix, even an interim one. Using a transport rule will allow to see the attachment but cause

    problems to the mail text.

    If you already have an interim fix… provide it or provide an instruction to roll off RU3.

  8. Leon says:

    what a great explaination how email messageing works and the handling of it.

    shame of the bug, you cant fix and test everything.

    at the moment i have such a case with one of my customers,…we are desperatly waiting for a fix on the fix.

    so fix it ;):):):)

    i like your blogs!

    keep it up i say! :)



  9. Philip says:

    Hallelujah! Finally this issue will addressed, it's been an annoyance for so long…

  10. MacSamurai says:

    Any update on this? I have several clients that are impacted and it's really causing a major problem. Thanks.

  11. xC0000005 says:

    @MacSamurai – You should contact Microsoft Support, an IU has been produced.

  12. Greg Leatherwood says:

    Thanks, this is a good first step.  However, Exchange, Outlook and OWA should display inline PDFs within the bodies of messages, just like these programs display JPGs, PNGs and BMPs.  PDF is a universally-accepted open standard that Office 2010 supports.  Why should Microsoft's email clients be years behind Apple's products in their inability to display PDFs within email messages?

  13. Steve Maser says:

    Our Exchange Admins installed the IU over the weekend.

    This fixed the "Mail.app/non-Exchange-users sending in-line PDFs to Outlook/Exchange users who are not seeing the PDF" issue.

    However, there are still issues for Mail.app users — who are configured for Exchange.

    1)  If a Mail.app/non-Exchange user sends a message with an in-line PDF to a Mail.app/Exchange user — the in-line PDF goes to the *bottom* of the body of the message.

    2)  If a Mail.app/Exchange user sends a message with an in-line PDF to a Mail.app user — configured for Exchange or something else — the recipient sees *no* PDF in the body (inline or otherwise).  In this case the message in the "Sent" mailbox is also not showing any in-line PDF.

    However, in both cases, the attachment is shown in the header of the received message.

    So, the IU does not fix all possible (yet common) issues with in-line PDFs.

  14. xC0000005 says:

    @Greg Leatherwood – I have looked into this and while your feedback is welcome, I can only say that it will be considered for inclusion in a future version of Exchange.

    @Steve – As noted in the support forum thread, I need submission transport details to identify #2 (the unexpected result).  

  15. Steve Maser says:

    Mail.app's autodiscovery finds and sets up our Exchange accounts as "EWS" accounts.  Is that what you are looking for?  If not, please let me know…

  16. francisswest says:

    Have user login to OWA.

    Find offending email in OWA

    Forward to self

    Open forwarded email in Outlook

    Blam, attachments show up.

    Not a fix, but hopefully it'll help somebody…

  17. Marc Schuthof says:

    I got the same issue as got to the same conclusion as francisswest.

    Use OWA as a work around. Works for us.

  18. Cat Hater says:

    Do you really think it's appropriate to put your comments about people allergic to cats in a technical blog post?

  19. Eric says:

    I believe there are two versions of RU3 for E2007SP3.  Does RU3-v2 need to be fixed as well?

Comments are closed.