Circular Reference in the TNEF spec?<p align=left><strong>Section 2.4 Encapsulated Message Properties</strong></p> <p align=left> </p> <p align=left>This looks like a couple of circular references to me:</p> <p align=left> </p> <p><strong>MsgPropertyContent</strong> = PropertyScalarContent / PropertyMultiScalarContent / PropertyMultiVariableContent </p> <p align=left>PropertyScalarContent = <strong>MsgPropertyContent</strong> [PropertyPad] </p> <p>PropertyMultiScalarContent = PropertyContentCount *<strong>MsgPropertyContent</strong> [PropertyPad] </p> <p> </p> <p align=left>I can't find an explanation for this type of encoding in the ABNF rfc and I can't think of how to implement it.  Any explanation would be appreciated.</p> <p align=left> </p> <p align=left>Greg</p>© 2009 Microsoft Corporation. All rights reserved.Thu, 16 Jul 2009 17:37:19 Zfb46f0ff-bb85-4b5a-996e-4558b2a42951http://social.msdn.microsoft.com/Forums/en-US/os_exchangeprotocols/thread/fb46f0ff-bb85-4b5a-996e-4558b2a42951#fb46f0ff-bb85-4b5a-996e-4558b2a42951http://social.msdn.microsoft.com/Forums/en-US/os_exchangeprotocols/thread/fb46f0ff-bb85-4b5a-996e-4558b2a42951#fb46f0ff-bb85-4b5a-996e-4558b2a42951Gregory K. Miskinhttp://social.msdn.microsoft.com/Profile/en-US/?user=Gregory%20K.%20MiskinCircular Reference in the TNEF spec?<p align=left><strong>Section 2.4 Encapsulated Message Properties</strong></p> <p align=left> </p> <p align=left>This looks like a couple of circular references to me:</p> <p align=left> </p> <p><strong>MsgPropertyContent</strong> = PropertyScalarContent / PropertyMultiScalarContent / PropertyMultiVariableContent </p> <p align=left>PropertyScalarContent = <strong>MsgPropertyContent</strong> [PropertyPad] </p> <p>PropertyMultiScalarContent = PropertyContentCount *<strong>MsgPropertyContent</strong> [PropertyPad] </p> <p> </p> <p align=left>I can't find an explanation for this type of encoding in the ABNF rfc and I can't think of how to implement it.  Any explanation would be appreciated.</p> <p align=left> </p> <p align=left>Greg</p>Thu, 15 May 2008 00:42:13 Z2008-06-17T20:13:51Zhttp://social.msdn.microsoft.com/Forums/en-US/os_exchangeprotocols/thread/fb46f0ff-bb85-4b5a-996e-4558b2a42951#339a06e9-8f1f-46e7-b01d-ea3efc542496http://social.msdn.microsoft.com/Forums/en-US/os_exchangeprotocols/thread/fb46f0ff-bb85-4b5a-996e-4558b2a42951#339a06e9-8f1f-46e7-b01d-ea3efc542496Keith Hagemanhttp://social.msdn.microsoft.com/Profile/en-US/?user=Keith%20HagemanCircular Reference in the TNEF spec?<p align=left><font face=Arial size=2>Hi Greg,</font></p> <p align=left>Thanks for your question. I have moved your posting to the Windows Protocols forum which is the better forum for this question.</p>Thu, 15 May 2008 14:55:32 Z2008-05-15T14:55:32Zhttp://social.msdn.microsoft.com/Forums/en-US/os_exchangeprotocols/thread/fb46f0ff-bb85-4b5a-996e-4558b2a42951#ab54a395-cad1-46dc-ab6a-859c4eb03e1ehttp://social.msdn.microsoft.com/Forums/en-US/os_exchangeprotocols/thread/fb46f0ff-bb85-4b5a-996e-4558b2a42951#ab54a395-cad1-46dc-ab6a-859c4eb03e1eGregory K. Miskinhttp://social.msdn.microsoft.com/Profile/en-US/?user=Gregory%20K.%20MiskinCircular Reference in the TNEF spec?I should also like to point out that on page 22, the comment indicates that Boolean types are 16 bits but examining TNEF data leads me to believe they are actually 32-bit. <p align=left><font face=Arial size=2></font> </p>Tue, 20 May 2008 22:54:24 Z2008-05-20T22:54:24Zhttp://social.msdn.microsoft.com/Forums/en-US/os_exchangeprotocols/thread/fb46f0ff-bb85-4b5a-996e-4558b2a42951#500d72d5-739e-420c-b984-8768b99d30d6http://social.msdn.microsoft.com/Forums/en-US/os_exchangeprotocols/thread/fb46f0ff-bb85-4b5a-996e-4558b2a42951#500d72d5-739e-420c-b984-8768b99d30d6Gregory K. Miskinhttp://social.msdn.microsoft.com/Profile/en-US/?user=Gregory%20K.%20MiskinCircular Reference in the TNEF spec?<font size=3><b><i><font size=4> <p><font size=2>2.4 Encapsulated Message Properties </font></p></b></i></font> <p align=left><font size=2></font> </p> <p align=left><font size=2>; Only present when MsgPropertyId is &gt; 0x8000 </font></p> <p align=left><font size=2>NamedPropSpec = PropNameSpace PropIDType PropMap </font></p></font> <p align=left><font face=Arial></font> </p> <p align=left>Should be:</p> <p> </p> <p align=left>; Only present when MsgPropertyId is &gt;= 0x8000 </p>Wed, 21 May 2008 19:22:21 Z2008-05-21T19:22:21Zhttp://social.msdn.microsoft.com/Forums/en-US/os_exchangeprotocols/thread/fb46f0ff-bb85-4b5a-996e-4558b2a42951#0ce0eb2e-da18-4349-8e46-82abd26431cfhttp://social.msdn.microsoft.com/Forums/en-US/os_exchangeprotocols/thread/fb46f0ff-bb85-4b5a-996e-4558b2a42951#0ce0eb2e-da18-4349-8e46-82abd26431cfGregory K. Miskinhttp://social.msdn.microsoft.com/Profile/en-US/?user=Gregory%20K.%20MiskinCircular Reference in the TNEF spec?<p align=left><font face=Arial size=2>Page 12<font size=3></p></font></font> <p align=left> </p> <p align=left><strong>2.2 ABNEF Description</strong></p> <p align=left> </p> <p>;Attachment RendData </p> <p align=left>idAttachRendData = %x02.02.06.00 </p> <p> </p> <p align=left>Should be:</p> <p align=left>idAttachRendData = %x02.09.06.00 </p>Wed, 21 May 2008 19:38:30 Z2008-05-21T19:38:30Zhttp://social.msdn.microsoft.com/Forums/en-US/os_exchangeprotocols/thread/fb46f0ff-bb85-4b5a-996e-4558b2a42951#2b08501e-c1a5-4e9e-9c01-098c1d6936ebhttp://social.msdn.microsoft.com/Forums/en-US/os_exchangeprotocols/thread/fb46f0ff-bb85-4b5a-996e-4558b2a42951#2b08501e-c1a5-4e9e-9c01-098c1d6936ebGregory K. Miskinhttp://social.msdn.microsoft.com/Profile/en-US/?user=Gregory%20K.%20MiskinCircular Reference in the TNEF spec?<p><strong>Section 2.4 Encapsulated Message Properties</strong></p> <p align=left> </p> <p align=left>page 21</p> <p align=left> </p> <p>; Used if PropIDType is IDTypeString. Contains a length, then a </p> <p align=left>; UTF-16LE encoded UNICODE string ; and terminating 2-byte zero character, padded to UINT32 boundary </p> <p align=left>PropMapString = UINT32 *UINT16 %00.00 [PropMapPad] </p> <p align=left> </p> <p align=left>Should be clarified as:</p> <p align=left></p> <p>; Used if PropIDType is IDTypeString. Contains a length, then a </p> <p align=left>; UTF-16LE encoded UNICODE string<strong>.  The length includes the</strong> terminating 2-byte zero character<strong>.  Optional padding </strong>to UINT32 boundary </p> <p align=left><font face=Arial></font> </p>Thu, 29 May 2008 19:51:34 Z2008-05-29T19:51:34Zhttp://social.msdn.microsoft.com/Forums/en-US/os_exchangeprotocols/thread/fb46f0ff-bb85-4b5a-996e-4558b2a42951#649ac410-ffcf-4b1b-aeb9-bc2dfdbc97b9http://social.msdn.microsoft.com/Forums/en-US/os_exchangeprotocols/thread/fb46f0ff-bb85-4b5a-996e-4558b2a42951#649ac410-ffcf-4b1b-aeb9-bc2dfdbc97b9Gregory K. Miskinhttp://social.msdn.microsoft.com/Profile/en-US/?user=Gregory%20K.%20MiskinCircular Reference in the TNEF spec?<p><strong>Section 2.4 Encapsulated Properties</strong></p> <p align=left> </p> <p align=left>page 24</p> <p align=left> </p> <p align=left>This is completely wrong:</p> <p align=left> </p> <p>PropertyVariableContent = MsgPropertySize <strong>MsgPropertyValue</strong> [PropertyPad] </p> <p align=left> </p> <p align=left>MsgPropertyValue is defined at the top of the section (page 21) as:</p> <p align=left> </p> <p><strong>MsgPropertyValue</strong> = MsgPropertyTag MsgPropertyContent </p> <p align=left>MsgPropertyTag = MsgPropertyType MsgPropertyId [NamedPropSpec] </p> <p align=left><font face=Arial></font> </p> <p align=left>Variable length  types do not include the <strong>MsgPropertyTag</strong> again.  These just contain the data for the specified length.</p>Thu, 29 May 2008 19:56:50 Z2008-05-29T19:56:50Zhttp://social.msdn.microsoft.com/Forums/en-US/os_exchangeprotocols/thread/fb46f0ff-bb85-4b5a-996e-4558b2a42951#d240ccda-2099-4664-8fe1-d34f2628ef01http://social.msdn.microsoft.com/Forums/en-US/os_exchangeprotocols/thread/fb46f0ff-bb85-4b5a-996e-4558b2a42951#d240ccda-2099-4664-8fe1-d34f2628ef01Gregory K. Miskinhttp://social.msdn.microsoft.com/Profile/en-US/?user=Gregory%20K.%20MiskinCircular Reference in the TNEF spec?<p align=left><font face=Arial size=2>I'm getting pretty excited.  My original post was almost a month ago which means it might be getting a response any week now!  Woohoo!  Just in time for me to ship my reader.</font></p> <p align=left> </p> <p align=left>For anyone else out there building a TNEF reader, it is possible to do using the MS-OXTNEF spec.  Sort of.  </p> <p align=left> </p> <p align=left>Use the errata listed above, of course, but there are little interesting things like nested messages that you'll just have to pick through the TNEF data using a binary editor to get right.  </p> <p align=left> </p> <p align=left>Some of the property types (strings) always seem to have a multi-value count, other do only for MV types.</p> <p align=left> </p> <p align=left>In short, the spec is an interesting and helpful starting point for building a TNEF reader/writer but don't go just by the written word.  Look at TNEF output from different versions of Exchange.</p>Wed, 11 Jun 2008 19:33:36 Z2008-06-11T19:33:36Zhttp://social.msdn.microsoft.com/Forums/en-US/os_exchangeprotocols/thread/fb46f0ff-bb85-4b5a-996e-4558b2a42951#be448aed-fee8-41bd-b43d-8d6d7cffef80http://social.msdn.microsoft.com/Forums/en-US/os_exchangeprotocols/thread/fb46f0ff-bb85-4b5a-996e-4558b2a42951#be448aed-fee8-41bd-b43d-8d6d7cffef80Tom Devey - MSFThttp://social.msdn.microsoft.com/Profile/en-US/?user=Tom%20Devey%20-%20MSFTCircular Reference in the TNEF spec?<p>Greg,</p> <p align=left> </p> <p align=left>Sorry this got missed as your orginal post got moved to the wrong forum and just plain fell under the radar.  I've moved it to the Exchange Protocol Forum so it will receive the proper attention.  I'm taking your feedback and filing bugs against the documentation. </p> <p align=left> </p> <p align=left>Thank you for your feedback.</p>Thu, 12 Jun 2008 16:09:41 Z2008-06-12T16:09:41Zhttp://social.msdn.microsoft.com/Forums/en-US/os_exchangeprotocols/thread/fb46f0ff-bb85-4b5a-996e-4558b2a42951#3569ce67-6567-409d-a7ab-71a337fb69cdhttp://social.msdn.microsoft.com/Forums/en-US/os_exchangeprotocols/thread/fb46f0ff-bb85-4b5a-996e-4558b2a42951#3569ce67-6567-409d-a7ab-71a337fb69cdTom Devey - MSFThttp://social.msdn.microsoft.com/Profile/en-US/?user=Tom%20Devey%20-%20MSFTCircular Reference in the TNEF spec?<p align=left><font size=1>Greg, Booleans and I2 are 16-bit and all values must be padded to 4 bytes which is what you are seeing in the stream.</font></p>Thu, 12 Jun 2008 16:24:02 Z2008-06-13T23:03:54Zhttp://social.msdn.microsoft.com/Forums/en-US/os_exchangeprotocols/thread/fb46f0ff-bb85-4b5a-996e-4558b2a42951#24435f35-40d0-4c7b-865f-3531f4dbfb6fhttp://social.msdn.microsoft.com/Forums/en-US/os_exchangeprotocols/thread/fb46f0ff-bb85-4b5a-996e-4558b2a42951#24435f35-40d0-4c7b-865f-3531f4dbfb6fTom Devey - MSFThttp://social.msdn.microsoft.com/Profile/en-US/?user=Tom%20Devey%20-%20MSFTCircular Reference in the TNEF spec?<div class=quote> <table width="85%"> <tbody> <tr> <td class=txt4> <strong>Gregory K. Miskin wrote:</strong></td></tr> <tr> <td class=quoteTable> <table width="100%"> <tbody> <tr> <td class=txt4 valign=top width="100%"><font size=3><b><i><font size=4> <p><font size=2>2.4 Encapsulated Message Properties </font></p></b></i></font> <p align=left><font size=2></font> </p> <p align=left><font size=2>; Only present when MsgPropertyId is &gt; 0x8000 </font></p> <p align=left><font size=2>NamedPropSpec = PropNameSpace PropIDType PropMap </font></p></font> <p align=left><font face=Arial></font> </p> <p align=left>Should be:</p> <p> </p> <p align=left>; Only present when MsgPropertyId is &gt;= 0x8000 </p> <p></p></td></tr></tbody></table></td></tr></tbody></table></div> <p></p> <p align=left> </p> <p align=left>Bug has been filed against the documentation.</p>Thu, 12 Jun 2008 16:29:28 Z2008-06-13T23:04:06Zhttp://social.msdn.microsoft.com/Forums/en-US/os_exchangeprotocols/thread/fb46f0ff-bb85-4b5a-996e-4558b2a42951#12bfed56-7347-4815-838a-a16378fb2297http://social.msdn.microsoft.com/Forums/en-US/os_exchangeprotocols/thread/fb46f0ff-bb85-4b5a-996e-4558b2a42951#12bfed56-7347-4815-838a-a16378fb2297Tom Devey - MSFThttp://social.msdn.microsoft.com/Profile/en-US/?user=Tom%20Devey%20-%20MSFTCircular Reference in the TNEF spec?<div class=quote> <table width="85%"> <tbody> <tr> <td class=txt4> <strong>Gregory K. Miskin wrote:</strong></td></tr> <tr> <td class=quoteTable> <table width="100%"> <tbody> <tr> <td class=txt4 valign=top width="100%"> <p align=left><strong>Section 2.4 Encapsulated Message Properties</strong></p> <p align=left> </p> <p align=left>This looks like a couple of circular references to me:</p> <p align=left> </p> <p><strong>MsgPropertyContent</strong> = PropertyScalarContent / PropertyMultiScalarContent / PropertyMultiVariableContent </p> <p align=left>PropertyScalarContent = <strong>MsgPropertyContent</strong> [PropertyPad] </p> <p>PropertyMultiScalarContent = PropertyContentCount *<strong>MsgPropertyContent</strong> [PropertyPad] </p> <p> </p> <p align=left>I can't find an explanation for this type of encoding in the ABNF rfc and I can't think of how to implement it.  Any explanation would be appreciated.</p> <p align=left> </p> <p align=left>Greg</p> <p></p></td></tr></tbody></table></td></tr></tbody></table></div> <p></p> <p align=left><font size=1> </p> <p>Scalar content has a single value and a pad if needed, to reach a 4 byte boundary.  Multi-scaler has a count padded to 4 bytes, followed by that number of properties, each padded to 4 bytes.  Varaible content is a count, then that number of properties in the form size, value, pad.</p> <p align=left> </p> <p align=left>Does this help?<br></p></font>Thu, 12 Jun 2008 16:33:51 Z2008-06-13T23:04:13Zhttp://social.msdn.microsoft.com/Forums/en-US/os_exchangeprotocols/thread/fb46f0ff-bb85-4b5a-996e-4558b2a42951#d90e0b89-937f-4438-927b-204289284459http://social.msdn.microsoft.com/Forums/en-US/os_exchangeprotocols/thread/fb46f0ff-bb85-4b5a-996e-4558b2a42951#d90e0b89-937f-4438-927b-204289284459Gregory K. Miskinhttp://social.msdn.microsoft.com/Profile/en-US/?user=Gregory%20K.%20MiskinCircular Reference in the TNEF spec?<div class=quote> <table width="85%"> <tbody> <tr> <td class=txt4> <strong>Tom Devey - MSFT wrote:</strong></td></tr> <tr> <td class=quoteTable> <table width="100%"> <tbody> <tr> <td class=txt4 valign=top width="100%"> <div class=quote> <table width="85%"> <tbody> <tr> <td class=txt4> <strong>Gregory K. Miskin wrote:</strong></td></tr> <tr> <td class=quoteTable> <table width="100%"> <tbody> <tr> <td class=txt4 valign=top width="100%"> <p align=left><strong>Section 2.4 Encapsulated Message Properties</strong></p> <p align=left> </p> <p align=left>This looks like a couple of circular references to me:</p> <p align=left> </p> <p><strong>MsgPropertyContent</strong> = PropertyScalarContent / PropertyMultiScalarContent / PropertyMultiVariableContent </p> <p align=left>PropertyScalarContent = <strong>MsgPropertyContent</strong> [PropertyPad] </p> <p>PropertyMultiScalarContent = PropertyContentCount *<strong>MsgPropertyContent</strong> [PropertyPad] </p> <p> </p> <p align=left>I can't find an explanation for this type of encoding in the ABNF rfc and I can't think of how to implement it.  Any explanation would be appreciated.</p> <p align=left> </p> <p align=left>Greg</p> <p></p></td></tr></tbody></table></td></tr></tbody></table></div> <p></p> <p align=left><font size=1> </p> <p>Scalar content has a single value and a pad if needed, to reach a 4 byte boundary.  Multi-scaler has a count padded to 4 bytes, followed by that number of properties, each padded to 4 bytes.  Varaible content is a count, then that number of properties in the form size, value, pad.</p> <p align=left> </p> <p align=left>Does this help?<br></p> <p></font></p></td></tr></tbody></table></td></tr></tbody></table></div> <p></p> <p align=left> </p> <p align=left>Tom,</p> <p align=left> </p> <p align=left>Thanks for the reply.</p> <p align=left> </p> <p align=left>I grok the padding and count.  I was trying to point out that there is a circular reference for MsgPropertyContent, that is, you can't get to the end of its definition.  </p> <p align=left> </p> <p align=left>In other words, in a simplified form, MsgPropertyContent == PropertyScalarContent == MsgPropertyContent....</p> <p align=left> </p> <p align=left>There's no real definition of PropertyScalarContent and PropertyMultiScalarContent.  You have to, in my opinion, define the scalars and not assume anything.</p> <p align=left> </p> <p align=left>Greg</p>Sun, 15 Jun 2008 01:11:23 Z2008-06-15T01:11:23Zhttp://social.msdn.microsoft.com/Forums/en-US/os_exchangeprotocols/thread/fb46f0ff-bb85-4b5a-996e-4558b2a42951#159c5111-b7e4-41de-a750-d9f597e67403http://social.msdn.microsoft.com/Forums/en-US/os_exchangeprotocols/thread/fb46f0ff-bb85-4b5a-996e-4558b2a42951#159c5111-b7e4-41de-a750-d9f597e67403Tom Devey - MSFThttp://social.msdn.microsoft.com/Profile/en-US/?user=Tom%20Devey%20-%20MSFTCircular Reference in the TNEF spec?<p align=left><font face=Arial size=2>Thanks, I will pass the feedback to the documentation group. </font></p>Tue, 17 Jun 2008 20:08:35 Z2008-06-17T20:13:51Zhttp://social.msdn.microsoft.com/Forums/en-US/os_exchangeprotocols/thread/fb46f0ff-bb85-4b5a-996e-4558b2a42951#735a280d-d181-435e-8051-afe393e95e20http://social.msdn.microsoft.com/Forums/en-US/os_exchangeprotocols/thread/fb46f0ff-bb85-4b5a-996e-4558b2a42951#735a280d-d181-435e-8051-afe393e95e20Gregory K. Miskinhttp://social.msdn.microsoft.com/Profile/en-US/?user=Gregory%20K.%20MiskinCircular Reference in the TNEF spec?<strong>Section 2.3.3 attFrom<br><br></strong>There is no mention of padding here.  Clearly padding is taking place between the end of <strong>sender-email-address</strong> and the checksum.  The padding is the delta between <strong>structure-length</strong> and (8+ <strong>sender-name-length</strong> + <strong>sender-email-length</strong>) .  Maybe it isn't padding but there are NULL bytes there that cannot be accounted for with the string lengths.  In one particular case it was 8 bytes.<br><br>I can't account for these bytes in the spec and am assuming they are padding.<br>Tue, 24 Jun 2008 02:28:29 Z2008-06-24T02:28:29Zhttp://social.msdn.microsoft.com/Forums/en-US/os_exchangeprotocols/thread/fb46f0ff-bb85-4b5a-996e-4558b2a42951#701e8561-4fef-4ad3-b3a5-4f45fece64b8http://social.msdn.microsoft.com/Forums/en-US/os_exchangeprotocols/thread/fb46f0ff-bb85-4b5a-996e-4558b2a42951#701e8561-4fef-4ad3-b3a5-4f45fece64b8Tom Devey - MSFThttp://social.msdn.microsoft.com/Profile/en-US/?user=Tom%20Devey%20-%20MSFTCircular Reference in the TNEF spec?Greg,  I've emailed the document owner for clarification.<hr size="1" align="left" width="25%">Developer ConsultantThu, 26 Jun 2008 16:36:22 Z2008-06-26T16:36:22Zhttp://social.msdn.microsoft.com/Forums/en-US/os_exchangeprotocols/thread/fb46f0ff-bb85-4b5a-996e-4558b2a42951#9e2e8ac0-2d03-4c38-ab30-498f61259cb1http://social.msdn.microsoft.com/Forums/en-US/os_exchangeprotocols/thread/fb46f0ff-bb85-4b5a-996e-4558b2a42951#9e2e8ac0-2d03-4c38-ab30-498f61259cb1Tom Devey - MSFThttp://social.msdn.microsoft.com/Profile/en-US/?user=Tom%20Devey%20-%20MSFTCircular Reference in the TNEF spec?Greg, <p>The version 1.0 of the Exchange Server Protocol documents released today.  The top-level URL for the documents can be found here <a href="http://msdn.microsoft.com/en-us/library/cc307725(EXCHG.80).aspx">http://msdn.microsoft.com/en-us/library/cc307725(EXCHG.80).aspx</a>.   You can also download the zip file that contains the PDF version of the Exchange Server Protocol documents <a href="http://go.microsoft.com/fwlink/?LinkId=115073">http://go.microsoft.com/fwlink/?LinkId=115073</a></p> <p>For your interest the updated [MS-OXTNEF] document can be downloaded at <a href="http://download.microsoft.com/download/5/D/D/5DD33FDF-91F5-496D-9884-0A0B0EE698BB/[MS-OXTNEF].pdf">http://download.microsoft.com/download/5/D/D/5DD33FDF-91F5-496D-9884-0A0B0EE698BB/%5BMS-OXTNEF%5D.pdf</a></p> <p>From the bugs you filed:</p> <ul> <li>&quot;MsgPropertyId is &gt; 0x8000&quot; now correctly reads &quot;MsgPropertyId is &gt;= 0x8000&quot;<br></li> <li>Boolean types are 16 bits but examining TNEF data leads me to believe they are actually 32-bit.</li></ul> <blockquote dir=ltr style="margin-right:0px"> <p>The documentation has been updated to added the follow:<br><br>PropertyScalarContent = MsgPropertyContent [PropertyPad]<br> <br> ; PropertyPad – between 0 and 3 zero-filled bytes, added to the streamed<br> ; property values to achieve 4-byte boundary. Writers MUST use zero bytes<br> ; and Readers MUST permit non-zero bytes. These pad bytes MUST be counted<br> ; in the checksum of the containing attribute.<br> <br> PropertyPad=*3ZERO<br> ZERO= %x00<br></p></blockquote> <ul> <li>Section 2.2 ABNF has been updated<br></li> <li>Section 2.4 Encapsulated Message Properties updated<br><br> ;Used if PropIDType is IDTypeString. Contains a length, then a <br> ; UTF-16LE encoded UNICODE string <br> ; The length includes the terminating 2-byte zero character. Optional padding ; to UINT32 boundary<br></li> <li>Section 2.4 Encapsulated Properties<br> &quot;PropertyVariableContent = MsgPropertySize MsgPropertyValue [PropertyPad]&quot; <br> now reads <br> &quot;PropertyVariableContent = MsgPropertySize MsgPropertyContent [PropertyPad]&quot;<br></li></ul> <p>Note that the &quot;Section 2.3.3 attFrom&quot; and the &quot;Cirular reference issue&quot; will be updated in the next round of protocol document updates.</p> <p>If you have any questions or find any discrepancies in the new documentation please don’t hesitate to post questions or feedback to this forum.</p> <p>Again thank you for providing valueable feedback.<br> </p><hr size="1" align="left" width="25%">Developer ConsultantFri, 27 Jun 2008 18:25:54 Z2008-06-27T18:25:54Zhttp://social.msdn.microsoft.com/Forums/en-US/os_exchangeprotocols/thread/fb46f0ff-bb85-4b5a-996e-4558b2a42951#95c45ac9-0d19-4712-8248-7c90b633519ahttp://social.msdn.microsoft.com/Forums/en-US/os_exchangeprotocols/thread/fb46f0ff-bb85-4b5a-996e-4558b2a42951#95c45ac9-0d19-4712-8248-7c90b633519aTom Devey - MSFThttp://social.msdn.microsoft.com/Profile/en-US/?user=Tom%20Devey%20-%20MSFTCircular Reference in the TNEF spec?I talked to the document owner yesterday in regards to the Message Properties Circular Reference and he made some changes in the version 1.0 release that should address this issue.<br><br>Please let me know it this doesn't address your issue so I can follow-up with the document owner to make sure it does get fixed.Wed, 02 Jul 2008 20:56:12 Z2008-07-02T22:14:39Zhttp://social.msdn.microsoft.com/Forums/en-US/os_exchangeprotocols/thread/fb46f0ff-bb85-4b5a-996e-4558b2a42951#27c06a0d-9451-4520-8d31-e2063142659ehttp://social.msdn.microsoft.com/Forums/en-US/os_exchangeprotocols/thread/fb46f0ff-bb85-4b5a-996e-4558b2a42951#27c06a0d-9451-4520-8d31-e2063142659eGregory K. Miskinhttp://social.msdn.microsoft.com/Profile/en-US/?user=Gregory%20K.%20MiskinCircular Reference in the TNEF spec? <font style="font-size:12px">Page 23:<br><font style="font-size:12px"> <p><strong>MsgPropertyContent</strong> = PropertyScalarContent / PropertyMultiScalarContent / PropertyMultiVariableContent </p></font></font><font style="font-size:12px"> <p>; Scalars – Types Int16, Int32, Flt32, Flt64, Currency, AppTime, ; Bool, Int64, Systime, CLSID ; The data for the particular property is written to the stream and if necessary, ;padded with bytes (which SHOULD be zero) to achieve a multiple of 4-bytes in length. <br><br>PropertyScalarContent = <strong>MsgPropertyContent</strong> [PropertyPad] <br><br>This is still a circular reference until you define <strong>PropertyScalarContent</strong> without reusing <strong>MsgPropertyContent</strong>.  So it should read:<br><br>PropertyScalarContent = TypeInt16 / TypeInt32 / TypeFlt32 / TypeFlt64 / Type Currency / TypeAppTime / TypeBoolean / TypeInt64 / TypeSystime / TypeCLSID [PropertyPad]<br><br>See the difference?  I can now get to the end of the definition of MsgPropertyContent.  The same thing needs to be done with <strong>PropertyVariableContent</strong> but I don't want to do all the work here. :)</p></font>Wed, 02 Jul 2008 22:56:33 Z2008-07-02T22:56:33Zhttp://social.msdn.microsoft.com/Forums/en-US/os_exchangeprotocols/thread/fb46f0ff-bb85-4b5a-996e-4558b2a42951#5ed12fd8-94d0-486c-9615-35246bc627d5http://social.msdn.microsoft.com/Forums/en-US/os_exchangeprotocols/thread/fb46f0ff-bb85-4b5a-996e-4558b2a42951#5ed12fd8-94d0-486c-9615-35246bc627d5Tom Devey - MSFThttp://social.msdn.microsoft.com/Profile/en-US/?user=Tom%20Devey%20-%20MSFTCircular Reference in the TNEF spec?<p dir=ltr style="margin-right:0px"><font id=UniqueID1216917903639>&quot;<b>Section 2.3.3 attFrom<br><br></b>There is no mention of padding here.  Clearly padding is taking place between the end of <b>sender-email-address</b> and the checksum.  The padding is the delta between <b>structure-length</b> and (8+ <b>sender-name-length</b> + <b>sender-email-length</b>) .  Maybe it isn't padding but there are NULL bytes there that cannot be accounted for with the string lengths.  In one particular case it was 8 bytes.<br><br>I can't account for these bytes in the spec and am assuming they are padding.&quot;<br><br>The feedback from development is it doesn't matter since the decoding will work fine with or without the pad.   In reviewing the documentation  development is looking at putting verbage to clarify this even though it should work fine either way.<br><br>Thanks for the great feedback.</font></p> <hr align=left width="25%" size=1> Developer ConsultantThu, 24 Jul 2008 16:48:33 Z2008-07-24T16:52:33Zhttp://social.msdn.microsoft.com/Forums/en-US/os_exchangeprotocols/thread/fb46f0ff-bb85-4b5a-996e-4558b2a42951#1a2c84fe-7d45-405b-8c7e-1d19bf6ef2a1http://social.msdn.microsoft.com/Forums/en-US/os_exchangeprotocols/thread/fb46f0ff-bb85-4b5a-996e-4558b2a42951#1a2c84fe-7d45-405b-8c7e-1d19bf6ef2a1Michael B. Hansenhttp://social.msdn.microsoft.com/Profile/en-US/?user=Michael%20B.%20HansenCircular Reference in the TNEF spec?Hi Tom,<br/><br/>Even though this thread is a bit old - I found it relevant as the documentation still hasn't been corrected. <br/><br/>I'm using MS-OXTNEF v2.0 released April 10, 2009 - but the circular reference issue with PropertyScalarContent [page 24] still exist.<br/><br/>Also, the &quot;Section 2.3.3 attFrom&quot; issue may also not have been addressed(?) I haven't verified myself as of yet whether or not padding exists - but if it does as Gregory mentions, then the documentation doesn't appear to reflect this.<br/><br/><br/>/MichaelMon, 22 Jun 2009 13:37:19 Z2009-06-22T13:37:19Zhttp://social.msdn.microsoft.com/Forums/en-US/os_exchangeprotocols/thread/fb46f0ff-bb85-4b5a-996e-4558b2a42951#44c7cd15-92e1-4adc-8086-9db0032110dchttp://social.msdn.microsoft.com/Forums/en-US/os_exchangeprotocols/thread/fb46f0ff-bb85-4b5a-996e-4558b2a42951#44c7cd15-92e1-4adc-8086-9db0032110dcTom Devey - MSFThttp://social.msdn.microsoft.com/Profile/en-US/?user=Tom%20Devey%20-%20MSFTCircular Reference in the TNEF spec?A quick review of the orginal Technical Document Issue (TDI) that I filed it was supposed to have been fixed with the August documentation release of 2008.    Reviewing both Exhange 2007 and the Exchange 2010 [MS-OXTNEF] documentation it was never fixed.  I created a new TDI to get this fix.<br/><br/>Thank you for your feedback.<hr class="sig">Developer ConsultantFri, 10 Jul 2009 22:49:36 Z2009-07-10T22:49:36Zhttp://social.msdn.microsoft.com/Forums/en-US/os_exchangeprotocols/thread/fb46f0ff-bb85-4b5a-996e-4558b2a42951#89d5ad5d-f404-4071-899d-0964f11ebef3http://social.msdn.microsoft.com/Forums/en-US/os_exchangeprotocols/thread/fb46f0ff-bb85-4b5a-996e-4558b2a42951#89d5ad5d-f404-4071-899d-0964f11ebef3Tom Devey - MSFThttp://social.msdn.microsoft.com/Profile/en-US/?user=Tom%20Devey%20-%20MSFTCircular Reference in the TNEF spec?As for Section 2.3.3 attFrom there was an end note that was added to reflect the differences for the <span style="font-size:xx-small">&quot;pad&quot;.<br/><br/>Hope this helps.</span><hr class="sig">Developer ConsultantFri, 10 Jul 2009 23:05:32 Z2009-07-10T23:05:32Zhttp://social.msdn.microsoft.com/Forums/en-US/os_exchangeprotocols/thread/fb46f0ff-bb85-4b5a-996e-4558b2a42951#97eaf3a2-3c13-4654-85bc-02ad0a986614http://social.msdn.microsoft.com/Forums/en-US/os_exchangeprotocols/thread/fb46f0ff-bb85-4b5a-996e-4558b2a42951#97eaf3a2-3c13-4654-85bc-02ad0a986614Michael B. Hansenhttp://social.msdn.microsoft.com/Profile/en-US/?user=Michael%20B.%20HansenCircular Reference in the TNEF spec?Hi again Tom,<br/><br/>I just discovered a minor issue in the documentation page 11 - the property idParentID seems to have been removed between v1 and v2 of the document.<br/><br/>It should read:<br/><br/><span style="font-size:x-small"> <p>idMessageAttr = idMessageClass / idFrom / idSubject / idDateSent / idDateRecd / idMessageStatus / idMessageID / idParentID /</p> <p>idConversationID / idBody / idPriority / idDateModified / idRecipTable / idOriginalMessageClass / idOwner / idSentFor /</p> <p>idDelegate / idDateStart / idDateEnd / idAidOwner / idRequestRes</p> <p><br/>; PidTagParentKey</p> <p>idParentID = %x0A.80.01.00 <br/><br/><br/>I found the problem after running a forward rule (in Outlook2007 on an Exchange 2003)<br/><br/><br/>/Michael</p> </span>Wed, 15 Jul 2009 08:17:24 Z2009-07-15T08:18:13Zhttp://social.msdn.microsoft.com/Forums/en-US/os_exchangeprotocols/thread/fb46f0ff-bb85-4b5a-996e-4558b2a42951#42cb828b-6929-4508-8a57-9f17f70e76c6http://social.msdn.microsoft.com/Forums/en-US/os_exchangeprotocols/thread/fb46f0ff-bb85-4b5a-996e-4558b2a42951#42cb828b-6929-4508-8a57-9f17f70e76c6Tom Devey - MSFThttp://social.msdn.microsoft.com/Profile/en-US/?user=Tom%20Devey%20-%20MSFTCircular Reference in the TNEF spec?<p>Michael,<br/><br/>I have filed a Technical Document Issue (TDI) to get this fixed.  Thank you for the continued feedback on this document.</p><hr class="sig">Developer ConsultantThu, 16 Jul 2009 17:37:19 Z2009-07-16T17:37:19Z