The Email That Refused to Print
Posted by William Diaz on September 17, 2010
From time to time we encounter requests where someone tries to print an email and encounters the following message prompt: “Items in this are still loading. Please wait a moment and try again.”
Microsoft addresses this issue here (to no avail) and so you wait a moment and try again, only to encounter the same result. What’s happening? Outlook 2003 is telling you that some embedded object in this message cannot be opened, and I cannot print the message for you until that object is resolved.
I like to think of html formatted messages in Outlook as web pages, especially in the case of Outlook 2003, since it relies on Internet Explorer’s mshtml component to handle printing. So, think of this problem in a similar way: this is kind of like waiting for a downed website or invalid URL to load into your web browser, and it just waits and waits and waits until it times out with a 404 – Page not found. Embedded content in Outlook html formatted messages can be thought of in the same way. The only difference is there is no built in logic in Outlook that, after a given time, tells the message that the object is missing, to ignore it, and let you do whatever you want with the message, e.g. print it.
Here is an example of one of these messages. The user needs to print it but the message above won’t let him proceed. I have it forwarded to myself and visually scan it to find the missing object that is failing to load. It presents itself as a blank space in the message body:
This blank area in quotes is not actually a tab or spaces. It’s likely an image was inserted here. Emails can also contain image links, and if they are invalid, you would not see the image. But this is not likely the case. Internet URLs that fail to resolve should display a red X. Looking under the hood, we can expose the html formatting of the message by right-clicking in a blank area and selecting View Source. This reveals all the html tags and other formatting code that makes up the message. After doing this, I can search for area where the missing content is by using ctrl+F and typing in the unique text before the missing object:
The start of the IMG style tag indicates there was, in fact, an image embedded into the message. When you embed an image into a message, it’s simply a URL to its content in the message, which you see that here as src=”mhtml:mid://00000568/!cid:CAB896E09AAF455F80B4C21CD2CC58BE@PC30. Breaking this down a bit more*:
“The “mid” (Message-ID) and “cid” (Content-ID) URL schemes provide identifiers for messages and their body parts. The “mid” scheme uses (a part of) the message-id of an email message to refer to a specific message. The “cid” scheme refers to a specific body part of a message; its use is generally limited to references to other body parts in the same message as the referring body part. The “mid” scheme may also refer to a specific body part within a designated message, by including the content-ID’s address.”
In short, the missing content is never going to resolve since it is no longer in the message. As to why this happened, I cannot say. The original message might contain some clues in the Internet Headers but I don’t have the original message. From what I can see, the message originated outside our Exchange network, went back and forth between different foreign parties before getting to us, and likely an issue occurred during the encoding or decoding of the message on one of the various mail servers that ended up removing the image.
To work around this, I simply copied the message to Word and printed from there. Alternatively, if the message needs to be printed from Outlook to include header info, open it, edit the message by deleting the part of the message where the missing object is, then print and/or save.
Images are not the only kind of content that can cause this message to appear. Any kind of content can lead to this, such as copying information from web pages, which could introduce unseen formatting that contains scripts.
Testing across a different office suites, the same problem message in Outlook 2010 yielded different results. Here, an image place mark is inserted in place of the unresolved object:
However, trying to print the same email with Outlook 2007/2010 caused Outlook to become unresponsive. To see what was happening, I used Process Explorer to view the stack of one of the Outlook threads after Outlook became hung:
Notice near the top of the stack the urlmon.dll module. Looks like Outlook 2007/2010 gets hung trying to resolve in the same manner but fails to recover. Dumping the Outlook process and opening with WinDbg points to urlmon also:
However, this behavior was not consistent in all cases through across Outlook 2007/2010. My initial testing was done in XP Office 2003/2007/2010. I cannot replicate this issue in 2010 on the Windows 7 platform.