<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Jive into Messaging world</title><link>http://blogs.msdn.com/b/vikas/</link><description /><dc:language>en-US</dc:language><generator>Telligent Community 5.6.583.17018 (Build: 5.6.583.17018)</generator><item><title>Draft: How to take EWS/OWA/ETL trace to troubleshoot Exchange Web Services issues – EXCHANGE 2007 &amp; 2010</title><link>http://blogs.msdn.com/b/vikas/archive/2011/06/23/draft-how-to-take-ews-owa-etl-trace-to-troubleshoot-exchange-web-services-issues-exchange-2007-amp-2010.aspx</link><pubDate>Thu, 23 Jun 2011 09:27:02 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10178111</guid><dc:creator>Vikas - MSFT</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/vikas/rsscomments.aspx?WeblogPostID=10178111</wfw:commentRss><comments>http://blogs.msdn.com/b/vikas/archive/2011/06/23/draft-how-to-take-ews-owa-etl-trace-to-troubleshoot-exchange-web-services-issues-exchange-2007-amp-2010.aspx#comments</comments><description>&lt;p&gt;THIS IS A DRAFT DOCUMENT AND MAY CHANGE WITHOUT PRIOR NOTICE. &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;PURPOSE: &lt;/strong&gt;Collect ETL trace from Exchange Server 2007 &amp;amp; 2010 to troubleshoot Exchange Web Services related issues.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Applies to: &lt;/strong&gt;Microsoft® Exchange Server© 2007 &amp;amp; 2010&lt;/p&gt;  &lt;p align="justify"&gt;&lt;strong&gt;&lt;u&gt;Steps&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;1) Go to CAS Server and fire up Extra.exe &lt;em&gt;(%PROGRAMFILES%\Microsoft\Exchange Server\Bin\ExTRA.exe)&lt;/em&gt;    &lt;br /&gt;2) This will bring the following window, click on ‘Select a task’&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.vikasverma.com/blogimages/Draft-How-to-take-ETL-Traces_CDCF/image.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://www.vikasverma.com/blogimages/Draft-How-to-take-ETL-Traces_CDCF/image_thumb.png" width="717" height="596" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;3) Click on “Trace Control”&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.vikasverma.com/blogimages/Draft-How-to-take-ETL-Traces_CDCF/image_3.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://www.vikasverma.com/blogimages/Draft-How-to-take-ETL-Traces_CDCF/image_thumb_3.png" width="717" height="596" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;4) Configure the trace options, file location, maximum file size (100-200mb should be enough for normal scenarios)   &lt;br /&gt;5) Select sequential logging, and run traces for a time period in which you should be able to reproduce the issue. Usually 300 seconds are good enough to switch over and reproduce the error.    &lt;br /&gt;6) Click “Set components and tags for the type of tracing selected”    &lt;br /&gt;7) Type of tracing will be “6. OWA Tracing”&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.vikasverma.com/blogimages/Draft-How-to-take-ETL-Traces_CDCF/image_4.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://www.vikasverma.com/blogimages/Draft-How-to-take-ETL-Traces_CDCF/image_thumb_4.png" width="718" height="549" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;8) Under trace types, select all of them to get a verbose log   &lt;br /&gt;9) Under components, OWA will be selected by default – you might want to uncheck that as it will add logs for OWA traffic as well    &lt;br /&gt;10) Choose trace components according to your problem, in basic scenarios and EWS issues MSExchangeWebServices should be sufficient.    &lt;br /&gt;11) These are the providers which looks good to get a detailed log and uncovering the hidden issues somewhere in the communication.    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; a. ADProvider    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; b. ADRecipientCache    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; c. ADExpansion    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; d. AuthenticationProvider    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; e. Common    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; f. Diagnostics    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; g. MSExchangeWebServices    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; h. NetworkingLayer    &lt;br /&gt;12) Once done, hit Start tracing&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.vikasverma.com/blogimages/Draft-How-to-take-ETL-Traces_CDCF/image_5.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://www.vikasverma.com/blogimages/Draft-How-to-take-ETL-Traces_CDCF/image_thumb_5.png" width="720" height="589" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;13) It will run the trace for the specified duration, keep it running and reproduce the problem&lt;/p&gt;        &lt;p&gt;&lt;a href="http://www.vikasverma.com/blogimages/Draft-How-to-take-ETL-Traces_CDCF/image_6.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://www.vikasverma.com/blogimages/Draft-How-to-take-ETL-Traces_CDCF/image_thumb_6.png" width="721" height="590" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;14) Once done it will generate a binary file (.ETL) which contains all the proprietary &amp;amp; confidential debugging information related to the product.&lt;/p&gt;  &lt;p&gt;15) Take instructions from the Microsoft Support Professional on how to send the file back to him/her.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;DISCLAIMER: THE STEPS BELOW CAN IMPACT THE PERFORMANCE OF THE EXCHANGE SERVER AND MUST BE PERFORMED IN GUADIANCE OF MICROSOFT SUPPORT PROFESSIONAL. IN NO EVENT SHALL MICROSOFT, ITS AUTHORS, OR ANYONE ELSE INVOLVED IN THE CREATION, PRODUCTION, OR DELIVERY OF THE DOCUMENT BE LIABLE FOR ANY DAMAGES WHATSOEVER (INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF BUSINESS PROFITS, BUSINESS INTERRUPTION, LOSS OF BUSINESS INFORMATION, OR OTHER PECUNIARY LOSS) ARISING OUT OF THE USE OF OR INABILITY TO USE THE DOCUMENTATION, EVEN IF MICROSOFT HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.&lt;/strong&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10178111" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/vikas/archive/tags/Exchange/">Exchange</category><category domain="http://blogs.msdn.com/b/vikas/archive/tags/Exchange+2007/">Exchange 2007</category><category domain="http://blogs.msdn.com/b/vikas/archive/tags/HOWTO/">HOWTO</category><category domain="http://blogs.msdn.com/b/vikas/archive/tags/Exchange+Web+Services/">Exchange Web Services</category><category domain="http://blogs.msdn.com/b/vikas/archive/tags/DevMsgTeam/">DevMsgTeam</category><category domain="http://blogs.msdn.com/b/vikas/archive/tags/ExchangeServiceBinding/">ExchangeServiceBinding</category><category domain="http://blogs.msdn.com/b/vikas/archive/tags/EWS+Managed+API/">EWS Managed API</category><category domain="http://blogs.msdn.com/b/vikas/archive/tags/FYI/">FYI</category><category domain="http://blogs.msdn.com/b/vikas/archive/tags/Exchange+2010/">Exchange 2010</category><category domain="http://blogs.msdn.com/b/vikas/archive/tags/DRAFT/">DRAFT</category></item><item><title>Trouble updating contacts’ physical addresses using EWS Managed API?</title><link>http://blogs.msdn.com/b/vikas/archive/2011/06/14/trouble-updating-contacts-physical-addresses-using-ews-managed-api.aspx</link><pubDate>Tue, 14 Jun 2011 15:57:18 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10174408</guid><dc:creator>Vikas - MSFT</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/vikas/rsscomments.aspx?WeblogPostID=10174408</wfw:commentRss><comments>http://blogs.msdn.com/b/vikas/archive/2011/06/14/trouble-updating-contacts-physical-addresses-using-ews-managed-api.aspx#comments</comments><description>&lt;p&gt;This happened to be a second recent case among many others facing the similar issue, and they could not update an existing contact using EWS Managed API.&lt;/p&gt;  &lt;p&gt;I got this customer, like all others complaining that they cannot set the contact’s Physical Address to a blank value. The same contact can be updated using EWS SOAP API but not with managed API… hmm… I knew the answer already &lt;img style="border-bottom-style: none; border-left-style: none; border-top-style: none; border-right-style: none" class="wlEmoticon wlEmoticon-smile" alt="Smile" src="http://www.vikasverma.com/blogimages/EWS-1.1-Managed-API-aka-EWS-MAPI_12A6F/wlEmoticon-smile.png" /&gt;&lt;/p&gt;  &lt;p&gt;Error Message: &lt;strong&gt;The request failed schema validation: The element 'Updates' in namespace '&lt;/strong&gt;&lt;a href="http://schemas.microsoft.com/exchange/services/2006/types'"&gt;http://schemas.microsoft.com/exchange/services/2006/types'&lt;/a&gt;&lt;strong&gt; has incomplete content. List of possible elements expected: 'AppendToItemField, SetItemField, DeleteItemField' in namespace 'http://schemas.microsoft.com/exchange/services/2006/types'.&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Here is the code which was causing the trouble&lt;/p&gt;  &lt;div class="csharpcode"&gt;   &lt;pre class="alt"&gt;        &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; UpdateContact(ExchangeService svc,ItemId id)&lt;/pre&gt;

  &lt;pre&gt;        {&lt;/pre&gt;

  &lt;pre class="alt"&gt;            Contact myContact = Contact.Bind(svc, id);&lt;/pre&gt;

  &lt;pre&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;            PhysicalAddressEntry paEntryHome = &lt;span class="kwrd"&gt;null&lt;/span&gt;;&lt;/pre&gt;

  &lt;pre&gt;            PhysicalAddressEntry paEntryBusiness = &lt;span class="kwrd"&gt;null&lt;/span&gt;;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre&gt;            paEntryHome = &lt;span class="kwrd"&gt;new&lt;/span&gt; PhysicalAddressEntry();&lt;/pre&gt;

  &lt;pre class="alt"&gt;            paEntryHome.Street = &lt;span class="str"&gt;&amp;quot;&amp;quot;&lt;/span&gt;;&lt;/pre&gt;

  &lt;pre&gt;            paEntryHome.City = &lt;span class="str"&gt;&amp;quot;&amp;quot;&lt;/span&gt;;&lt;/pre&gt;

  &lt;pre class="alt"&gt;            paEntryHome.PostalCode = &lt;span class="str"&gt;&amp;quot;&amp;quot;&lt;/span&gt;;&lt;/pre&gt;

  &lt;pre&gt;            paEntryHome.State = &lt;span class="str"&gt;&amp;quot;&amp;quot;&lt;/span&gt;;&lt;/pre&gt;

  &lt;pre class="alt"&gt;            paEntryHome.CountryOrRegion = &lt;span class="str"&gt;&amp;quot;&amp;quot;&lt;/span&gt;;&lt;/pre&gt;

  &lt;pre&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;            paEntryBusiness = &lt;span class="kwrd"&gt;new&lt;/span&gt; PhysicalAddressEntry();&lt;/pre&gt;

  &lt;pre&gt;            paEntryBusiness.Street = &lt;span class="str"&gt;&amp;quot;&amp;quot;&lt;/span&gt;;&lt;/pre&gt;

  &lt;pre class="alt"&gt;            paEntryBusiness.City = &lt;span class="str"&gt;&amp;quot;&amp;quot;&lt;/span&gt;;&lt;/pre&gt;

  &lt;pre&gt;            paEntryBusiness.PostalCode = &lt;span class="str"&gt;&amp;quot;&amp;quot;&lt;/span&gt;;&lt;/pre&gt;

  &lt;pre class="alt"&gt;            paEntryBusiness.State = &lt;span class="str"&gt;&amp;quot;&amp;quot;&lt;/span&gt;;&lt;/pre&gt;

  &lt;pre&gt;            paEntryBusiness.CountryOrRegion = &lt;span class="str"&gt;&amp;quot;&amp;quot;&lt;/span&gt;;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre&gt;            myContact.PhysicalAddresses[PhysicalAddressKey.Home] = paEntryHome;&lt;/pre&gt;

  &lt;pre class="alt"&gt;            myContact.PhysicalAddresses[PhysicalAddressKey.Business] = paEntryBusiness;&lt;/pre&gt;

  &lt;pre&gt;            &lt;/pre&gt;

  &lt;pre class="alt"&gt;            &lt;span class="kwrd"&gt;try&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;            {&lt;/pre&gt;

  &lt;pre class="alt"&gt;                myContact.Update(ConflictResolutionMode.AlwaysOverwrite);&lt;/pre&gt;

  &lt;pre&gt;            }&lt;/pre&gt;

  &lt;pre class="alt"&gt;            &lt;span class="kwrd"&gt;catch&lt;/span&gt;(Exception e)&lt;/pre&gt;

  &lt;pre&gt;            {&lt;/pre&gt;

  &lt;pre class="alt"&gt;                Console.WriteLine(e.ToString());&lt;/pre&gt;

  &lt;pre&gt;            }&lt;/pre&gt;

  &lt;pre class="alt"&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre&gt;        }&lt;/pre&gt;
&lt;/div&gt;




&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;p&gt;So what was the trouble in the code, it look pretty neat.. huh? Not exactly. You are creating a new instance of &lt;strong&gt;PhysicalAddressEntry &lt;/strong&gt;instead of using the existing object given by Managed API..&lt;/p&gt;

&lt;p&gt;Only, few lines of code change and it started to work like charm.. here is the working code for the same.&lt;/p&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;div class="csharpcode"&gt;
  &lt;pre class="alt"&gt;        &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; UpdateContact(ExchangeService svc,ItemId id)&lt;/pre&gt;

  &lt;pre&gt;        {&lt;/pre&gt;

  &lt;pre class="alt"&gt;            Contact myContact = Contact.Bind(svc, id);&lt;/pre&gt;

  &lt;pre&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;            PhysicalAddressEntry paEntryHome = &lt;span class="kwrd"&gt;null&lt;/span&gt;;&lt;/pre&gt;

  &lt;pre&gt;            PhysicalAddressEntry paEntryBusiness = &lt;span class="kwrd"&gt;null&lt;/span&gt;;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre&gt;            paEntryHome = myContact.PhysicalAddresses[PhysicalAddressKey.Home];&lt;/pre&gt;

  &lt;pre class="alt"&gt;            paEntryBusiness = myContact.PhysicalAddresses[PhysicalAddressKey.Business];&lt;/pre&gt;

  &lt;pre&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;            paEntryHome.Street = &lt;span class="str"&gt;&amp;quot;&amp;quot;&lt;/span&gt;;&lt;/pre&gt;

  &lt;pre&gt;            paEntryHome.City = &lt;span class="str"&gt;&amp;quot;&amp;quot;&lt;/span&gt;;&lt;/pre&gt;

  &lt;pre class="alt"&gt;            paEntryHome.PostalCode = &lt;span class="str"&gt;&amp;quot;&amp;quot;&lt;/span&gt;;&lt;/pre&gt;

  &lt;pre&gt;            paEntryHome.State = &lt;span class="str"&gt;&amp;quot;&amp;quot;&lt;/span&gt;;&lt;/pre&gt;

  &lt;pre class="alt"&gt;            paEntryHome.CountryOrRegion = &lt;span class="str"&gt;&amp;quot;&amp;quot;&lt;/span&gt;;&lt;/pre&gt;

  &lt;pre&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;            paEntryBusiness.Street = &lt;span class="str"&gt;&amp;quot;&amp;quot;&lt;/span&gt;;&lt;/pre&gt;

  &lt;pre&gt;            paEntryBusiness.City = &lt;span class="str"&gt;&amp;quot;&amp;quot;&lt;/span&gt;;&lt;/pre&gt;

  &lt;pre class="alt"&gt;            paEntryBusiness.PostalCode = &lt;span class="str"&gt;&amp;quot;&amp;quot;&lt;/span&gt;;&lt;/pre&gt;

  &lt;pre&gt;            paEntryBusiness.State = &lt;span class="str"&gt;&amp;quot;&amp;quot;&lt;/span&gt;;&lt;/pre&gt;

  &lt;pre class="alt"&gt;            paEntryBusiness.CountryOrRegion = &lt;span class="str"&gt;&amp;quot;&amp;quot;&lt;/span&gt;;&lt;/pre&gt;

  &lt;pre&gt;            &lt;/pre&gt;

  &lt;pre class="alt"&gt;            &lt;span class="kwrd"&gt;try&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;            {&lt;/pre&gt;

  &lt;pre class="alt"&gt;                myContact.Update(ConflictResolutionMode.AlwaysOverwrite);&lt;/pre&gt;

  &lt;pre&gt;            }&lt;/pre&gt;

  &lt;pre class="alt"&gt;            &lt;span class="kwrd"&gt;catch&lt;/span&gt;(Exception e)&lt;/pre&gt;

  &lt;pre&gt;            {&lt;/pre&gt;

  &lt;pre class="alt"&gt;                Console.WriteLine(e.ToString());&lt;/pre&gt;

  &lt;pre&gt;            }&lt;/pre&gt;

  &lt;pre class="alt"&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre&gt;        }&lt;/pre&gt;
&lt;/div&gt;




&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;p&gt;Hope this helps you all. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Happy coding / debugging!!!&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10174408" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/vikas/archive/tags/ERROR/">ERROR</category><category domain="http://blogs.msdn.com/b/vikas/archive/tags/Exchange+Web+Services/">Exchange Web Services</category><category domain="http://blogs.msdn.com/b/vikas/archive/tags/DevMsgTeam/">DevMsgTeam</category><category domain="http://blogs.msdn.com/b/vikas/archive/tags/How+It+Works/">How It Works</category><category domain="http://blogs.msdn.com/b/vikas/archive/tags/EWS+Managed+API/">EWS Managed API</category><category domain="http://blogs.msdn.com/b/vikas/archive/tags/Exchange+2010/">Exchange 2010</category><category domain="http://blogs.msdn.com/b/vikas/archive/tags/EWSMAPI/">EWSMAPI</category></item><item><title>Where are you Outlook???</title><link>http://blogs.msdn.com/b/vikas/archive/2011/06/10/where-are-you-outlook.aspx</link><pubDate>Fri, 10 Jun 2011 09:59:04 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10173251</guid><dc:creator>Vikas - MSFT</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/vikas/rsscomments.aspx?WeblogPostID=10173251</wfw:commentRss><comments>http://blogs.msdn.com/b/vikas/archive/2011/06/10/where-are-you-outlook.aspx#comments</comments><description>&lt;p&gt;So I got this friend of mine who works for MS IT and was curious to find Outlook’s install location programmatically irrespective of 32/64 bit installation of OS or Outlook.&lt;/p&gt; &lt;p&gt;First thought was registry, but that gets little messy.. you go to HKCR &amp;amp; then parse through it to find the location of Outlook.exe… I didn’t like that much, and that was not sure shot way… I could delete the Outlook.exe and it will still point me to the same path. You might ask why would someone delete the Outlook.exe and leaving other registry entries? My answer is because you can and then the registry solution will break.&lt;/p&gt; &lt;p&gt;So why not ask the Outlook itself where are you buddy? Nice, you would say, if only he can speak… yes he can!!! Here is how its done in C#&lt;/p&gt; &lt;p&gt;I am using Reflection to create an object to Outlook.Application. You can use this to create an object of any COM Object though. Whenever you create the object to a COM server inside EXE, its EXE is launched if not running already. So all you need to do is use &lt;strong&gt;System.Diagnostics.Process &lt;/strong&gt;class to get its Process Path. &lt;/p&gt;&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System;
&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Reflection;
&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Diagnostics;

&lt;span class="kwrd"&gt;namespace&lt;/span&gt; OutlookLocationFinder
{
    &lt;span class="kwrd"&gt;class&lt;/span&gt; Program
    {
        &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; Main(&lt;span class="kwrd"&gt;string&lt;/span&gt;[] args)
        {
            System.Type objType = &lt;span class="kwrd"&gt;null&lt;/span&gt;;
            &lt;span class="kwrd"&gt;object&lt;/span&gt; comObject = &lt;span class="kwrd"&gt;null&lt;/span&gt;;
            &lt;span class="kwrd"&gt;string&lt;/span&gt; version = &lt;span class="kwrd"&gt;string&lt;/span&gt;.Empty;
            Process[] p = &lt;span class="kwrd"&gt;null&lt;/span&gt;;

            &lt;span class="kwrd"&gt;try&lt;/span&gt;
            {

                &lt;span class="rem"&gt;// Create an object to Outlook.Application , replace with your COM Server's ProgID&lt;/span&gt;
                objType = System.Type.GetTypeFromProgID(&lt;span class="str"&gt;"Outlook.Application"&lt;/span&gt;);

                &lt;span class="rem"&gt;// Activate the object&lt;/span&gt;
                comObject = System.Activator.CreateInstance(objType);

                &lt;span class="rem"&gt;// This is Outlook specific, I am calling the member property to get the version of Outlook&lt;/span&gt;
                version = (&lt;span class="kwrd"&gt;string&lt;/span&gt;)objType.InvokeMember(&lt;span class="str"&gt;"Version"&lt;/span&gt;,
                               BindingFlags.InvokeMethod, &lt;span class="kwrd"&gt;null&lt;/span&gt;, comObject, &lt;span class="kwrd"&gt;null&lt;/span&gt;);
            }
            &lt;span class="kwrd"&gt;catch&lt;/span&gt;
            {
                Console.Write(&lt;span class="str"&gt;"Unable to create the object of type \"Outlook.Application\""&lt;/span&gt;);
            }

            &lt;span class="rem"&gt;// Whenever you create the object to a COM server inside EXE, its EXE is launched if not running already&lt;/span&gt;
            &lt;span class="rem"&gt;// Now, just get hold of the Process by its name&lt;/span&gt;
            p = Process.GetProcessesByName(&lt;span class="str"&gt;"Outlook"&lt;/span&gt;);
            
            &lt;span class="rem"&gt;// Beware there could be multiple instances running of the same application, we just care about first one.&lt;/span&gt;
            &lt;span class="kwrd"&gt;if&lt;/span&gt; (&lt;span class="kwrd"&gt;null&lt;/span&gt; != p &amp;amp;&amp;amp; p.Length &amp;gt; 0)
                Console.WriteLine(&lt;span class="str"&gt;"Outlook ({0}) is launched from: {1}"&lt;/span&gt;, version, p[0].MainModule.FileName);
            &lt;span class="kwrd"&gt;else&lt;/span&gt;
                Console.WriteLine(&lt;span class="str"&gt;"Outlook does not seem to be installed properly on this machine, could not find process running on local machine"&lt;/span&gt;);

            Console.Write(&lt;span class="str"&gt;"Press any key to exit."&lt;/span&gt;);
            Console.ReadKey(&lt;span class="kwrd"&gt;false&lt;/span&gt;);
        }
    }
}
&lt;/pre&gt;&lt;pre class="csharpcode"&gt;&lt;em&gt;Happy Coding / Debugging !!!&lt;/em&gt;&lt;/pre&gt;&lt;pre class="csharpcode"&gt;&amp;nbsp;&lt;/pre&gt;


&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10173251" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/vikas/archive/tags/Outlook/">Outlook</category><category domain="http://blogs.msdn.com/b/vikas/archive/tags/OOM/">OOM</category><category domain="http://blogs.msdn.com/b/vikas/archive/tags/Samples/">Samples</category><category domain="http://blogs.msdn.com/b/vikas/archive/tags/DevMsgTeam/">DevMsgTeam</category><category domain="http://blogs.msdn.com/b/vikas/archive/tags/CoolStuff/">CoolStuff</category></item><item><title>WP7: Quick Timer: Sample Application for Windows Phone 7</title><link>http://blogs.msdn.com/b/vikas/archive/2011/01/09/wp7-quick-timer-sample-application-for-windows-phone-7.aspx</link><pubDate>Sun, 09 Jan 2011 10:13:49 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10113437</guid><dc:creator>Vikas - MSFT</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/vikas/rsscomments.aspx?WeblogPostID=10113437</wfw:commentRss><comments>http://blogs.msdn.com/b/vikas/archive/2011/01/09/wp7-quick-timer-sample-application-for-windows-phone-7.aspx#comments</comments><description>&lt;p&gt;&lt;span style="font-family: Tahoma; color: black; font-size: x-small;"&gt;&lt;span style="font-size: 10pt;" dir="ltr"&gt;No
 wonder the development of WP7 apps is super easy and very much fun. I 
was looking for a quick hand timer application with laps and of course I
 could find hundreds of Apps on the Marketplace. I thought why not build
 one for myself and see how difficult it
is.&lt;br /&gt;
&lt;br /&gt;
Here is my first application and it did not took more than 15min to code the logic... yeah UI design took over 45min :)&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;img src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-83-19/8508.QuickTimer_5F00_Screenshot.jpg" border="0" /&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/b/vikas/archive/2011/01/09/wp7-quick-timer-sample-application-for-windows-phone-7.aspx"&gt;(Please visit the site to view this video)&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Download the source code from below, feel free to use the code of this application for personal &amp;amp; educational purposes. Written permission is required prior to any commercial use of the code. &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Have fun, happy coding!!!&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10113437" width="1" height="1"&gt;</description><enclosure url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-components-postattachments/00-10-11-34-37/QuickTimer_5F00_SourceCode_5F00_v1.0.zip" length="46156" type="application/octet-stream" /><category domain="http://blogs.msdn.com/b/vikas/archive/tags/xaml/">xaml</category><category domain="http://blogs.msdn.com/b/vikas/archive/tags/xap/">xap</category><category domain="http://blogs.msdn.com/b/vikas/archive/tags/code+samples/">code samples</category><category domain="http://blogs.msdn.com/b/vikas/archive/tags/wp7/">wp7</category><category domain="http://blogs.msdn.com/b/vikas/archive/tags/windows+phone+7/">windows phone 7</category></item><item><title>FYI: BUG: Attachments.Add fails for POP3/IMAP only accounts when the attachment type is Outlook.olEmbeddedItem</title><link>http://blogs.msdn.com/b/vikas/archive/2010/09/16/fyi-bug-attachments-add-fails-for-pop3-imap-only-accounts-when-the-attachment-type-is-outlook-olembeddeditem.aspx</link><pubDate>Wed, 15 Sep 2010 20:51:11 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10062635</guid><dc:creator>Vikas - MSFT</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/vikas/rsscomments.aspx?WeblogPostID=10062635</wfw:commentRss><comments>http://blogs.msdn.com/b/vikas/archive/2010/09/16/fyi-bug-attachments-add-fails-for-pop3-imap-only-accounts-when-the-attachment-type-is-outlook-olembeddeditem.aspx#comments</comments><description>&lt;p&gt;&lt;strong&gt;Problem: &lt;/strong&gt;Attachments.Add fails &lt;strong&gt;&lt;em&gt;only &lt;/em&gt;&lt;/strong&gt;for POP3/IMAP accounts when the attachment type is &lt;strong&gt;Outlook.olEmbeddedItem&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Cause: &lt;/strong&gt;This is a known issue with Microsoft Product (&lt;u&gt;Outlook 2010&lt;/u&gt;) and we have an internal fix available. The fix is expected to go public with the release of next Service Pack for the product.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Repro Code:&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;1. Setup a POP3 only profile   &lt;br /&gt;2. Make sure that there is at least one mail item in the Inbox.    &lt;br /&gt;3. Make the Inbox the current folder and run the following code:&lt;/p&gt;  &lt;p&gt;Sub TestAddAttachment()   &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Dim objItem As Outlook.MailItem    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Dim objAttachments As Outlook.Attachments    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Dim objItemAtt As Outlook.MailItem    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Set objItem = Application.CreateItem(olMailItem)    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; objItem.Subject = &amp;quot;TestAddAttachment&amp;quot;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Set objItemAtt = Application.ActiveExplorer.Selection.Item(1)    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Set objAttachments = objItem.Attachments    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; objAttachments.Add objItemAtt, Outlook.olEmbeddeditem, 1, objItemAtt.Subject    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; objItem.Display    &lt;br /&gt;End Sub&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Actual Result:&lt;/strong&gt; &lt;/p&gt;  &lt;p&gt;objAttachments.Add raises an error:&lt;/p&gt;  &lt;p&gt;Run-time error '-2147221233 (8004010f)':   &lt;br /&gt;The attempted operation failed. An object could not be found.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Expected Result:&amp;#160; &lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;No error   &lt;br /&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Workaround:&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;There is a workaround by saving the embedded item to the file system, similar to the following:&lt;/p&gt;  &lt;p&gt;Sub TestAddAttachmentWorkaround()   &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Dim objItem As Outlook.MailItem    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Dim objAttachments As Outlook.Attachments    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Dim objItemAtt As Outlook.MailItem    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Dim strPath As String    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Set objItem = Application.CreateItem(olMailItem)    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; objItem.Subject = &amp;quot;TestAddAttachment&amp;quot;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Set objItemAtt = Application.ActiveExplorer.Selection.Item(1)    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; strPath = Environ(&amp;quot;TEMP&amp;quot;) &amp;amp; &amp;quot;\testmsg.msg&amp;quot;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; objItemAtt.SaveAs strPath, olMSG    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Set objAttachments = objItem.Attachments    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; objAttachments.Add strPath, Outlook.olEmbeddeditem, 1, objItemAtt.Subject    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; objItem.Display    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Kill strPath    &lt;br /&gt;End Sub    &lt;br /&gt;&lt;/p&gt;  &lt;p&gt;Please contact Microsoft PSS if you are affected by this problem and cannot wait until next service pack release of Outlook 2010.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10062635" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/vikas/archive/tags/Outlook/">Outlook</category><category domain="http://blogs.msdn.com/b/vikas/archive/tags/ERROR/">ERROR</category><category domain="http://blogs.msdn.com/b/vikas/archive/tags/OOM/">OOM</category><category domain="http://blogs.msdn.com/b/vikas/archive/tags/Workarounds/">Workarounds</category><category domain="http://blogs.msdn.com/b/vikas/archive/tags/BUG/">BUG</category><category domain="http://blogs.msdn.com/b/vikas/archive/tags/DevMsgTeam/">DevMsgTeam</category><category domain="http://blogs.msdn.com/b/vikas/archive/tags/FYI/">FYI</category><category domain="http://blogs.msdn.com/b/vikas/archive/tags/attachment/">attachment</category><category domain="http://blogs.msdn.com/b/vikas/archive/tags/Known+Issue/">Known Issue</category></item><item><title>Exchange 2007: Transport error when sending emails using TLS (0x80040213)</title><link>http://blogs.msdn.com/b/vikas/archive/2010/07/23/exchange-2007-transport-error-when-sending-emails-using-tls-0x80040213.aspx</link><pubDate>Fri, 23 Jul 2010 16:54:46 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10041940</guid><dc:creator>Vikas - MSFT</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/vikas/rsscomments.aspx?WeblogPostID=10041940</wfw:commentRss><comments>http://blogs.msdn.com/b/vikas/archive/2010/07/23/exchange-2007-transport-error-when-sending-emails-using-tls-0x80040213.aspx#comments</comments><description>&lt;p&gt;Ok, this was a fun case and I never had such fun on a CDOSYS case &amp;amp; I am lying. I spent nearly all day in hunting down a Transport failure issue when sending emails using CDOSYS and Exchange 2007 as backend.&lt;/p&gt;  &lt;p&gt;This was the configuration of the default Receive connector, pretty secured…huh??? Yeah!!!&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.vikasverma.com/blogimages/42d622d6f955_1375B/image.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" class="wlDisabledImage" title="image" border="0" alt="image" src="http://www.vikasverma.com/blogimages/42d622d6f955_1375B/image_thumb.png" width="885" height="491" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Goal:&amp;#160; Send secured emails using CDOSYS over TLS using BASIC authentication&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Challenges:&amp;#160; ‘80040213’ The transport failed to connect to the server.&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;I confirmed that the issue is not in connectivity and I could easily do a telnet to port 25 and get the banner and supported verbs lists. The problem was that I could not do STARTTLS… heck it was not listed in the verbs list. With my “Mr. Fix It” cap on I took an ETL trace and started debugging the issue.&lt;/p&gt;  &lt;p&gt;I concluded that the certificates was the blocking issue, and I quickly turned back to the Event Viewer to see the following event log&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; color: #1f497d; font-size: 8pt"&gt;&lt;font color="#000000"&gt;Event Type:&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Error &lt;/font&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; color: #1f497d; font-size: 8pt"&gt;&lt;font color="#000000"&gt;Event Source:&amp;#160;&amp;#160;&amp;#160; MSExchangeTransport &lt;/font&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; color: #1f497d; font-size: 8pt"&gt;&lt;font color="#000000"&gt;Event Category: TransportService &lt;/font&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; color: #1f497d; font-size: 8pt"&gt;&lt;font color="#000000"&gt;Event ID:&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 12014 &lt;/font&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; color: #1f497d; font-size: 8pt"&gt;&lt;font color="#000000"&gt;Date:&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 7/23/2010 &lt;/font&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; color: #1f497d; font-size: 8pt"&gt;&lt;font color="#000000"&gt;Time:&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 6:26:25 PM &lt;/font&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; color: #1f497d; font-size: 8pt"&gt;&lt;font color="#000000"&gt;User:&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; N/A &lt;/font&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; color: #1f497d; font-size: 8pt"&gt;&lt;font color="#000000"&gt;Computer:&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; MSGEX07 &lt;/font&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; color: #1f497d; font-size: 8pt"&gt;&lt;font color="#000000"&gt;Description: &lt;/font&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; color: #1f497d; font-size: 8pt"&gt;&lt;font color="#000000"&gt;Microsoft Exchange couldn't find a certificate that contains the domain name msgex07.msglab.com in the personal store on the local computer. Therefore, it is unable to support the STARTTLS SMTP verb for the connector Default with a FQDN parameter of msgex07.msglab.com. If the connector's FQDN is not specified, the computer's FQDN is used. Verify the connector configuration and the installed certificates to make sure that there is a certificate with a domain name for that FQDN. If this certificate exists, run Enable-ExchangeCertificate -Services SMTP to make sure that the Microsoft Exchange Transport service has access to the certificate key. &lt;/font&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; color: #1f497d; font-size: 8pt"&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#000000"&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; color: #1f497d; font-size: 8pt"&gt;&lt;font color="#000000"&gt;For more information, see Help and Support Center at &lt;/font&gt;&lt;a href="http://go.microsoft.com/fwlink/events.asp"&gt;&lt;font color="#000000"&gt;http://go.microsoft.com/fwlink/events.asp&lt;/font&gt;&lt;/a&gt;&lt;font color="#000000"&gt;.&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; color: #1f497d; font-size: 8pt"&gt;&lt;font color="#000000"&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;a href="http://www.vikasverma.com/blogimages/42d622d6f955_1375B/clip_image001.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="clip_image001" border="0" alt="clip_image001" src="http://www.vikasverma.com/blogimages/42d622d6f955_1375B/clip_image001_thumb.jpg" width="410" height="454" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; color: #1f497d; font-size: 8pt"&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;Once I have resolved the Certificate issues, I can see the &lt;b&gt;STARTTLS &lt;/b&gt;verb supported by the Exchange server.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.vikasverma.com/blogimages/42d622d6f955_1375B/clip_image0015.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="clip_image001[5]" border="0" alt="clip_image001[5]" src="http://www.vikasverma.com/blogimages/42d622d6f955_1375B/clip_image0015_thumb.jpg" width="681" height="346" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;br /&gt;  &lt;br /&gt;  &lt;p&gt;If you do not see STARTTLS and DO see the event log entry then you need to verify the following things&lt;/p&gt;  &lt;p&gt;1) The FQDN of the server which is specified in the code, abc.xyz.com MUST match with the FQDN of the certificate &lt;/p&gt;  &lt;p&gt;2) The FQDN of the Receive Connector MUST match the FQDN of the certificate&lt;/p&gt;  &lt;p&gt;3) The Certificate in itself should be a valid one (not expired or with missing root CA)&lt;/p&gt;  &lt;p&gt;You can verify these details with the help of your Exchange Admin and the following Powershell Cmdlet&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Get-ExchangeCertificate | fl&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Enable-ExchangeCertificate –Services SMTP&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;New-ExchangeCertificate&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;See the below link for more information&lt;/p&gt;  &lt;p&gt;Reference: &lt;a href="http://technet.microsoft.com/en-us/library/bb430748.aspx"&gt;http://technet.microsoft.com/en-us/library/bb430748.aspx&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10041940" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/vikas/archive/tags/Exchange+2007/">Exchange 2007</category><category domain="http://blogs.msdn.com/b/vikas/archive/tags/CDOSYS/">CDOSYS</category><category domain="http://blogs.msdn.com/b/vikas/archive/tags/SSL/">SSL</category><category domain="http://blogs.msdn.com/b/vikas/archive/tags/SMTP/">SMTP</category><category domain="http://blogs.msdn.com/b/vikas/archive/tags/DevMsgTeam/">DevMsgTeam</category></item><item><title>Exchange 2010: OWA Customization: Preview forms does not works in Conversation Mode</title><link>http://blogs.msdn.com/b/vikas/archive/2010/07/23/exchange-2010-owa-customization-preview-forms-does-not-works-in-conversation-mode.aspx</link><pubDate>Fri, 23 Jul 2010 11:52:54 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10041822</guid><dc:creator>Vikas - MSFT</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/vikas/rsscomments.aspx?WeblogPostID=10041822</wfw:commentRss><comments>http://blogs.msdn.com/b/vikas/archive/2010/07/23/exchange-2010-owa-customization-preview-forms-does-not-works-in-conversation-mode.aspx#comments</comments><description>&lt;p&gt;I recently had couple of customer reporting that their existing/new OWA customization code is not working in Preview mode. &lt;/p&gt;  &lt;p&gt;You will notice the following error message displayed instead..&lt;/p&gt;  &lt;p&gt;&amp;quot;This type of message isn't fully supported in Conversation mode. Click here to open the full version, which may show you more details or features.&amp;quot;&lt;/p&gt;  &lt;p&gt;This same form &lt;em&gt;&lt;u&gt;should&lt;/u&gt; &lt;/em&gt;work in Exchange 2007. &lt;/p&gt;  &lt;p&gt;I have two news here, first there has been changes to &lt;em&gt;&lt;strong&gt;Registry.xml &lt;/strong&gt;&lt;/em&gt;and there has been couple of new clients support added. Make sure you have all of them listed in your &lt;strong&gt;&lt;em&gt;Registry.xml &lt;/em&gt;&lt;/strong&gt;when you run the test on Exchange 2010&lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Client Application=&amp;quot;MSIE&amp;quot; MinimumVersion=&amp;quot;7&amp;quot; Platform=&amp;quot;Windows NT&amp;quot; /&amp;gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Client Application=&amp;quot;MSIE&amp;quot; MinimumVersion=&amp;quot;7&amp;quot; Platform=&amp;quot;Windows 2000&amp;quot; /&amp;gt;     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Client Application=&amp;quot;MSIE&amp;quot; MinimumVersion=&amp;quot;7&amp;quot; Platform=&amp;quot;Windows 98; Win 9x 4.90&amp;quot; /&amp;gt;     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Client Application=&amp;quot;Safari&amp;quot; MinimumVersion=&amp;quot;3&amp;quot; Platform=&amp;quot;Macintosh&amp;quot; /&amp;gt;     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Client Application=&amp;quot;Firefox&amp;quot; MinimumVersion=&amp;quot;3&amp;quot; Platform=&amp;quot;Windows NT&amp;quot; /&amp;gt;     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Client Application=&amp;quot;Firefox&amp;quot; MinimumVersion=&amp;quot;3&amp;quot; Platform=&amp;quot;Windows 2000&amp;quot; /&amp;gt;     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Client Application=&amp;quot;Firefox&amp;quot; MinimumVersion=&amp;quot;3&amp;quot; Platform=&amp;quot;Windows 98; Win 9x 4.90&amp;quot; /&amp;gt;     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Client Application=&amp;quot;Firefox&amp;quot; MinimumVersion=&amp;quot;3&amp;quot; Platform=&amp;quot;Macintosh&amp;quot; /&amp;gt;     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Client Application=&amp;quot;Firefox&amp;quot; MinimumVersion=&amp;quot;3&amp;quot; Platform=&amp;quot;Linux&amp;quot; /&amp;gt;     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Client Application=&amp;quot;Chrome&amp;quot; MinimumVersion=&amp;quot;1&amp;quot; Platform=&amp;quot;Windows NT&amp;quot; /&amp;gt;&lt;/p&gt;  &lt;p&gt;Secondly, This issue is &lt;strong&gt;“by design”&lt;/strong&gt; that the custom forms will not work in Conversation Mode for now. &lt;/p&gt;  &lt;p&gt;This issue seems like something obvious that the product group will want to fix in the &lt;strong&gt;next major version&lt;/strong&gt;.&amp;#160;&amp;#160; It is currently not under consideration for a service pack or rollup for Exchange 2010, but may be considered at some point based on customer feedback. &lt;/p&gt;  &lt;p&gt;If this issue is causing troubles for you then I would request you to contact PSS.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10041822" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/vikas/archive/tags/Exchange+2007/">Exchange 2007</category><category domain="http://blogs.msdn.com/b/vikas/archive/tags/DevMsgTeam/">DevMsgTeam</category><category domain="http://blogs.msdn.com/b/vikas/archive/tags/OWA/">OWA</category><category domain="http://blogs.msdn.com/b/vikas/archive/tags/OWA+Customization/">OWA Customization</category><category domain="http://blogs.msdn.com/b/vikas/archive/tags/Exchange+2010/">Exchange 2010</category><category domain="http://blogs.msdn.com/b/vikas/archive/tags/Known+Issue/">Known Issue</category></item><item><title>System.Net.Mail cannot send secured email using SMTP over SSL aka SMTPS protocol</title><link>http://blogs.msdn.com/b/vikas/archive/2010/07/23/system-net-mail-cannot-send-secured-email-using-smtp-over-ssl-aka-smtps-protocol.aspx</link><pubDate>Fri, 23 Jul 2010 09:36:49 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10041788</guid><dc:creator>Vikas - MSFT</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/vikas/rsscomments.aspx?WeblogPostID=10041788</wfw:commentRss><comments>http://blogs.msdn.com/b/vikas/archive/2010/07/23/system-net-mail-cannot-send-secured-email-using-smtp-over-ssl-aka-smtps-protocol.aspx#comments</comments><description>&lt;p&gt;This is just FYI that we know the limitation of System.Net.Mail classes and its incapability of sending secured emails over SSL / SMTPS.&lt;/p&gt;  &lt;p&gt;The &lt;a href="http://msdn.microsoft.com/en-us/library/system.net.mail.smtpclient.aspx"&gt;SmtpClient&lt;/a&gt; class only supports the SMTP Service Extension for Secure SMTP over Transport Layer Security as defined in RFC 3207. In this mode, the SMTP session begins on an unencrypted channel, then a STARTTLS command is issued by the client to the server to switch to secure communication using SSL. See RFC 3207 published by the Internet Engineering Task Force (IETF) for more information.&lt;/p&gt;  &lt;p&gt;An alternate connection method is where an SSL session is established up front before any protocol commands are sent. This connection method is sometimes called SMTP/SSL, SMTP over SSL, or SMTPS and by default uses port 465. This alternate connection method using SSL is not currently supported.&lt;/p&gt;  &lt;p&gt;This is the limitation of SmtpClient and publically documented here but often missed&lt;/p&gt;  &lt;p&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/system.net.mail.smtpclient.enablessl.aspx"&gt;http://msdn.microsoft.com/en-us/library/system.net.mail.smtpclient.enablessl.aspx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;You may also ask your service provider to see if they can support STARTTLS sessions, which is fairly secure and not too complex to implement. &lt;/p&gt;  &lt;p&gt;You have an option to use either CDOSYS / System.Web.Mail from .Net 1.1 which internally uses CDOSYS to send out email. CDOSYS had this support but then the support was dropped in System.Net.Mail. Some may argue that why this downgrade, when CDOSYS had this support why System.Net.Mail drop this support – well this is not really a downgrade but a design decision that they made to support only one of the two optional ways to implement SSL while the SMTPS is used less commonly when compared to TLS.&lt;/p&gt;  &lt;p&gt;Here is the sample code that can do the job for you, please do not forget to add a reference to System.Web.dll into your project for this to work. I have compiled it on VS2008 and found it working.&lt;/p&gt;  &lt;p&gt;Please do proper testing before using this code in production and treat this piece of code just for the sake of educational purpose.&lt;/p&gt;  &lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System;
&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Collections.Generic;
&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Text;
&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Web.Mail;
 
&lt;span class="kwrd"&gt;namespace&lt;/span&gt; ConsoleApplication2
{
    &lt;span class="kwrd"&gt;class&lt;/span&gt; Program
    {
        &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; Main(&lt;span class="kwrd"&gt;string&lt;/span&gt;[] args)
        {
 
            MailMessage msg = &lt;span class="kwrd"&gt;new&lt;/span&gt; MailMessage();
            msg.To = &lt;span class="str"&gt;&amp;quot;to@server.com&amp;quot;&lt;/span&gt;;
            msg.From = &lt;span class="str"&gt;&amp;quot;from@server.com&amp;quot;&lt;/span&gt;;
            msg.Subject = &lt;span class="str"&gt;&amp;quot;This is a test email using System.Web.Mail&amp;quot;&lt;/span&gt;;
            msg.Body = &lt;span class="str"&gt;&amp;quot;Hello There!!!&amp;quot;&lt;/span&gt;;
            msg.BodyFormat = MailFormat.Text;
 
            &lt;span class="rem"&gt;// SMTP Server to use&lt;/span&gt;
            msg.Fields.Add(&lt;span class="str"&gt;&amp;quot;http://schemas.microsoft.com/cdo/configuration/smtpserver&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;smtp.server.com&amp;quot;&lt;/span&gt;);   
 
            &lt;span class="rem"&gt;// SMTP Port to use&lt;/span&gt;
            msg.Fields.Add(&lt;span class="str"&gt;&amp;quot;http://schemas.microsoft.com/cdo/configuration/smtpserverport&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;465&amp;quot;&lt;/span&gt;);                 
            
            &lt;span class="rem"&gt;// Send using Value, leave it to 2 for sending via SMTP Port specified&lt;/span&gt;
            msg.Fields.Add(&lt;span class="str"&gt;&amp;quot;http://schemas.microsoft.com/cdo/configuration/sendusing&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;2&amp;quot;&lt;/span&gt;);                        
            
            &lt;span class="rem"&gt;// Use SSL : 0 = False, 1 = True&lt;/span&gt;
            msg.Fields.Add(&lt;span class="str"&gt;&amp;quot;http://schemas.microsoft.com/cdo/configuration/smtpusessl&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;1&amp;quot;&lt;/span&gt;);                       
 
 
            &lt;span class="rem"&gt;// Authentication mode: &lt;/span&gt;
            &lt;span class="rem"&gt;//  0 - Anonymous&lt;/span&gt;
            &lt;span class="rem"&gt;//  1 - Basic&lt;/span&gt;
            &lt;span class="rem"&gt;//  2 - NTLM&lt;/span&gt;
            msg.Fields.Add(&lt;span class="str"&gt;&amp;quot;http://schemas.microsoft.com/cdo/configuration/smtpauthenticate&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;1&amp;quot;&lt;/span&gt;);
 
 
            &lt;span class="rem"&gt;// Username and password to connect to the SMTP Server&lt;/span&gt;
            msg.Fields.Add(&lt;span class="str"&gt;&amp;quot;http://schemas.microsoft.com/cdo/configuration/sendusername&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;USERNAME_HERE&amp;quot;&lt;/span&gt;);
            msg.Fields.Add(&lt;span class="str"&gt;&amp;quot;http://schemas.microsoft.com/cdo/configuration/sendpassword&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;PASSWORD_HERE&amp;quot;&lt;/span&gt;);
 
            SmtpMail.Send(msg);            
 
        }
    }
}&lt;/pre&gt;
&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10041788" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/vikas/archive/tags/CDOSYS/">CDOSYS</category><category domain="http://blogs.msdn.com/b/vikas/archive/tags/SSL/">SSL</category><category domain="http://blogs.msdn.com/b/vikas/archive/tags/Workarounds/">Workarounds</category><category domain="http://blogs.msdn.com/b/vikas/archive/tags/System-Net-Mail/">System.Net.Mail</category><category domain="http://blogs.msdn.com/b/vikas/archive/tags/DevMsgTeam/">DevMsgTeam</category><category domain="http://blogs.msdn.com/b/vikas/archive/tags/System-Web-Mail/">System.Web.Mail</category></item><item><title>HOTFIX: .NET 4.0 (System.Net.Mail) Unable to send emails with large attachments (more than 3MB)</title><link>http://blogs.msdn.com/b/vikas/archive/2010/07/21/hotfix-net-4-0-system-net-mail-unable-to-send-emails-with-large-attachments-more-than-3mb.aspx</link><pubDate>Tue, 20 Jul 2010 23:52:58 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10040675</guid><dc:creator>Vikas - MSFT</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/vikas/rsscomments.aspx?WeblogPostID=10040675</wfw:commentRss><comments>http://blogs.msdn.com/b/vikas/archive/2010/07/21/hotfix-net-4-0-system-net-mail-unable-to-send-emails-with-large-attachments-more-than-3mb.aspx#comments</comments><description>&lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;We have an official release for the issue and if you are facing this problem then I would recommend you contacting PSS and refer to this blog&lt;/p&gt;  &lt;p&gt;&lt;a title="http://blogs.msdn.com/b/vikas/archive/2010/04/05/bug-net-4-0-system-net-mail-unable-to-send-emails-with-large-attachments-more-than-3mb.aspx" href="http://blogs.msdn.com/b/vikas/archive/2010/04/05/bug-net-4-0-system-net-mail-unable-to-send-emails-with-large-attachments-more-than-3mb.aspx"&gt;http://blogs.msdn.com/b/vikas/archive/2010/04/05/bug-net-4-0-system-net-mail-unable-to-send-emails-with-large-attachments-more-than-3mb.aspx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;I am expected it to be released in a public KB in some time but for the time being you can request for the hotfix by contacting PSS&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;UPDATE - 7/21/2010&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;If you prefer not to contact PSS, you can download the hotfix by yourself from the following link.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://connect.microsoft.com/VisualStudio/Downloads/DownloadDetails.aspx?DownloadID=30226"&gt;http://connect.microsoft.com/VisualStudio/Downloads/DownloadDetails.aspx?DownloadID=30226&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10040675" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/vikas/archive/tags/BUG/">BUG</category><category domain="http://blogs.msdn.com/b/vikas/archive/tags/System-Net-Mail/">System.Net.Mail</category><category domain="http://blogs.msdn.com/b/vikas/archive/tags/DevMsgTeam/">DevMsgTeam</category><category domain="http://blogs.msdn.com/b/vikas/archive/tags/HotFix/">HotFix</category><category domain="http://blogs.msdn.com/b/vikas/archive/tags/attachment/">attachment</category><category domain="http://blogs.msdn.com/b/vikas/archive/tags/SNM/">SNM</category></item><item><title>FYI: MAPI Application does not work when running from Windows Service (MAPI_E_NETWORK_ERROR)</title><link>http://blogs.msdn.com/b/vikas/archive/2010/06/17/fyi-mapi-application-does-not-work-when-running-from-windows-service-mapi-e-network-error.aspx</link><pubDate>Thu, 17 Jun 2010 16:53:19 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10026575</guid><dc:creator>Vikas - MSFT</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/vikas/rsscomments.aspx?WeblogPostID=10026575</wfw:commentRss><comments>http://blogs.msdn.com/b/vikas/archive/2010/06/17/fyi-mapi-application-does-not-work-when-running-from-windows-service-mapi-e-network-error.aspx#comments</comments><description>&lt;p&gt;I recently had two cases where the MAPI application was failing while creating a dynamic profile calling IMsgServiceAdmin::ConfigureMsgService. &lt;/p&gt;  &lt;p&gt;Although if the same application is executed outside Service Control Manager then it work and is able to create the profile just fine.&lt;/p&gt;  &lt;p&gt;In both cases we found out that the older versions of OLMAPI32 had this problem and you MUST upgrade to the latest version &lt;b&gt;12.0.6514.5000 or above&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Publically available latest version is “October 2009 security update” - &lt;a href="http://support.microsoft.com/kb/972363"&gt;http://support.microsoft.com/kb/972363&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10026575" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/vikas/archive/tags/Outlook/">Outlook</category><category domain="http://blogs.msdn.com/b/vikas/archive/tags/MAPI/">MAPI</category><category domain="http://blogs.msdn.com/b/vikas/archive/tags/DevMsgTeam/">DevMsgTeam</category><category domain="http://blogs.msdn.com/b/vikas/archive/tags/FYI/">FYI</category></item><item><title>Webcast: Enhancements in VSTO 4.0 Deployment for Office 2007/2010</title><link>http://blogs.msdn.com/b/vikas/archive/2010/06/11/webcast-enhancements-in-vsto-4-0-deployment-for-office-2007-2010.aspx</link><pubDate>Thu, 10 Jun 2010 20:56:02 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10023177</guid><dc:creator>Vikas - MSFT</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/vikas/rsscomments.aspx?WeblogPostID=10023177</wfw:commentRss><comments>http://blogs.msdn.com/b/vikas/archive/2010/06/11/webcast-enhancements-in-vsto-4-0-deployment-for-office-2007-2010.aspx#comments</comments><description>&lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;One of my colleague, &lt;a href="http://blogs.msdn.com/akashb"&gt;Akash&lt;/a&gt;, today presented this webcast where he talked about the enhancements in VSTO 4.0 Deployment for Office 2007/2010 using Visual Studio 2010. The session demonstrate how to use ClickOnce post-deployment action and Deploying Multiple Office Solutions in a single click-once installer.&lt;/p&gt;  &lt;p&gt;Here is the link for the same, this has been hosted on Cloud &lt;img style="border-bottom-style: none; border-right-style: none; border-top-style: none; border-left-style: none" class="wlEmoticon wlEmoticon-smile" alt="Smile" src="http://www.vikasverma.com/blogimages/a77590e57a00_20CA/wlEmoticonsmile.png" /&gt;&lt;/p&gt;  &lt;p&gt;&lt;a title="http://zeollar.cloudapp.net/Session/121" href="http://zeollar.cloudapp.net/Session/121"&gt;http://zeollar.cloudapp.net/Session/121&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10023177" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/vikas/archive/tags/Outlook/">Outlook</category><category domain="http://blogs.msdn.com/b/vikas/archive/tags/VSTO/">VSTO</category><category domain="http://blogs.msdn.com/b/vikas/archive/tags/Webcast/">Webcast</category><category domain="http://blogs.msdn.com/b/vikas/archive/tags/colleagues/">colleagues</category><category domain="http://blogs.msdn.com/b/vikas/archive/tags/ClickOnce/">ClickOnce</category><category domain="http://blogs.msdn.com/b/vikas/archive/tags/Cloud/">Cloud</category><category domain="http://blogs.msdn.com/b/vikas/archive/tags/Deployment/">Deployment</category></item><item><title>BUG: Outlook: Error thrown by Outlook 2007 when all attendees of a meeting are removed programmatically before sending it</title><link>http://blogs.msdn.com/b/vikas/archive/2010/05/27/bug-outlook-error-thrown-by-outlook-2007-when-all-attendees-of-a-meeting-are-removed-programmatically-before-sending-it.aspx</link><pubDate>Wed, 26 May 2010 20:28:01 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10015880</guid><dc:creator>Vikas - MSFT</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/vikas/rsscomments.aspx?WeblogPostID=10015880</wfw:commentRss><comments>http://blogs.msdn.com/b/vikas/archive/2010/05/27/bug-outlook-error-thrown-by-outlook-2007-when-all-attendees-of-a-meeting-are-removed-programmatically-before-sending-it.aspx#comments</comments><description>&lt;p align="justify"&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p align="justify"&gt;&lt;strong&gt;THIS IS JUST FYI AND IF YOU ARE FACING THE SIMILAR ISSUE THEM PLEASE LET ME KNOW. WE ARE AWARE OF THIS ISSUE AND ALREADY WORKING ON A FIX FOR THE SAME.&lt;/strong&gt;&lt;/p&gt;  &lt;p align="justify"&gt;When using Outlook UI if a user tries to send a meeting request without any recipient he is prompted by the following prompt &lt;/p&gt;  &lt;p align="justify"&gt;&amp;quot;The meeting cannot be sent because there are no recipient names in the To box. Would you like to save and close this meeting instead?&amp;quot; - Yes/No &lt;/p&gt;  &lt;p align="justify"&gt;..but if you try to send the meeting programmatically using Outlook 2007 SP2 , you will not get the same prompt but gets this error message &lt;/p&gt;  &lt;p align="justify"&gt;&amp;quot;Out of memory or system resources. Close some windows or programs and try again.&amp;quot; &lt;/p&gt;  &lt;p align="justify"&gt;Although this works fine on all other versions like Outlook 2003, 2007 SP1, &amp;amp; 2010 except Outlook 2007 SP2. In all other versions the meeting is saved locally as Appointment instead.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;u&gt;CODE TO REPRODUCE THE BUG &amp;amp; WORKAROUND (SEE CODE COMMENTS)&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;Dim&lt;/span&gt; &lt;span class="kwrd"&gt;WithEvents&lt;/span&gt; oInspectors &lt;span class="kwrd"&gt;As&lt;/span&gt; Inspectors
&lt;span class="kwrd"&gt;Dim&lt;/span&gt; &lt;span class="kwrd"&gt;WithEvents&lt;/span&gt; oItem &lt;span class="kwrd"&gt;As&lt;/span&gt; AppointmentItem 

&lt;span class="kwrd"&gt;Sub&lt;/span&gt; Init()
&lt;span class="kwrd"&gt;Set&lt;/span&gt; oInspectors = Application.Inspectors
&lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;Sub&lt;/span&gt; 

&lt;span class="kwrd"&gt;Private&lt;/span&gt; &lt;span class="kwrd"&gt;Sub&lt;/span&gt; oInspectors_NewInspector(&lt;span class="kwrd"&gt;ByVal&lt;/span&gt; Inspector &lt;span class="kwrd"&gt;As&lt;/span&gt; Inspector)
    &lt;span class="kwrd"&gt;If&lt;/span&gt; TypeName(Inspector.CurrentItem) = &lt;span class="str"&gt;&amp;quot;AppointmentItem&amp;quot;&lt;/span&gt; &lt;span class="kwrd"&gt;Then&lt;/span&gt;
       &lt;span class="kwrd"&gt;Set&lt;/span&gt; oItem = Inspector.CurrentItem
    &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;If&lt;/span&gt;
&lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;Sub&lt;/span&gt; 

&lt;span class="kwrd"&gt;Private&lt;/span&gt; &lt;span class="kwrd"&gt;Sub&lt;/span&gt; oItem_Write(Cancel &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;Boolean&lt;/span&gt;)
    &lt;span class="kwrd"&gt;For&lt;/span&gt; i = oItem.Recipients.Count &lt;span class="kwrd"&gt;To&lt;/span&gt; 1 &lt;span class="kwrd"&gt;Step&lt;/span&gt; -1
        oItem.Recipients.Remove (i)
    &lt;span class="kwrd"&gt;Next&lt;/span&gt; 

&lt;span class="rem"&gt;'If we leave the Cancel = False then we get the error message&lt;/span&gt;
&lt;span class="rem"&gt;' Workaround Code: &lt;/span&gt;
&lt;span class="rem"&gt;' This will emulate the way Outlook does it in other versions by Saving the appointment to local calendar &lt;/span&gt;

    &lt;span class="kwrd"&gt;If&lt;/span&gt; oItem.Recipients.Count = 0 &lt;span class="kwrd"&gt;Then&lt;/span&gt;
        Cancel = &lt;span class="kwrd"&gt;True&lt;/span&gt; 
        oItem.Close olSave
    &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;If&lt;/span&gt; 

&lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;Sub&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;&lt;/p&gt;

&lt;pre class="csharpcode"&gt;&lt;font color="#000000" size="2" face="Consolas"&gt;&lt;/font&gt;&lt;/pre&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10015880" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/vikas/archive/tags/Outlook/">Outlook</category><category domain="http://blogs.msdn.com/b/vikas/archive/tags/OOM/">OOM</category><category domain="http://blogs.msdn.com/b/vikas/archive/tags/BUG/">BUG</category><category domain="http://blogs.msdn.com/b/vikas/archive/tags/DevMsgTeam/">DevMsgTeam</category><category domain="http://blogs.msdn.com/b/vikas/archive/tags/VBScript/">VBScript</category><category domain="http://blogs.msdn.com/b/vikas/archive/tags/Appointment/">Appointment</category><category domain="http://blogs.msdn.com/b/vikas/archive/tags/Meeting+Request/">Meeting Request</category><category domain="http://blogs.msdn.com/b/vikas/archive/tags/FYI/">FYI</category></item><item><title>We are Open, says PST to Outlook :-)</title><link>http://blogs.msdn.com/b/vikas/archive/2010/05/26/we-are-open-says-pst-to-outlook.aspx</link><pubDate>Wed, 26 May 2010 12:41:54 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10015554</guid><dc:creator>Vikas - MSFT</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/vikas/rsscomments.aspx?WeblogPostID=10015554</wfw:commentRss><comments>http://blogs.msdn.com/b/vikas/archive/2010/05/26/we-are-open-says-pst-to-outlook.aspx#comments</comments><description>&lt;p&gt;This is pretty exciting development which came yesterday as Microsoft announced the availability of two new open source projects to facilitate interoperability with Outlook PST files. &lt;/p&gt;  &lt;p&gt;Now start your engines and start thinking of solutions that you can build upon it, and some of you who were reverse engineering the PST format and already doing that have a real good news.. as it went official now ;-)&lt;/p&gt;  &lt;p&gt;The two open source projects, available on Copeplex under the Apache 2.0 license are the following:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;The PST Data Structure View Tool (&lt;a href="http://pstviewtool.codeplex.com/"&gt;http://pstviewtool.codeplex.com/&lt;/a&gt;) is a graphical tool allowing the developers to browse the internal data structures of a PST file. The primary goal of this tool is to assist people who are learning .pst format and help them to better understand the documentation. &lt;/li&gt;    &lt;li&gt;The PST File Format SDK (&lt;a href="http://pstsdk.codeplex.com/"&gt;http://pstsdk.codeplex.com/&lt;/a&gt;) is a cross platform C++ library for reading .pst files that can be incorporated into solutions that run on top of the .pst file format. The capability to write data to .pst files is part of the roadmap will be added to the SDK. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Read more about it here (blog has some videos as well)&lt;/p&gt;  &lt;p&gt;&lt;a title="http://www.microsoft.com/presspass/press/2010/may10/05-24PSTToolsPR.mspx" href="http://www.microsoft.com/presspass/press/2010/may10/05-24PSTToolsPR.mspx"&gt;http://www.microsoft.com/presspass/press/2010/may10/05-24PSTToolsPR.mspx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a title="http://blogs.msdn.com/b/interoperability/archive/2010/05/24/two-open-source-projects-to-facilitate-interoperability-with-outlook-pst-data-files.aspx" href="http://blogs.msdn.com/b/interoperability/archive/2010/05/24/two-open-source-projects-to-facilitate-interoperability-with-outlook-pst-data-files.aspx"&gt;http://blogs.msdn.com/b/interoperability/archive/2010/05/24/two-open-source-projects-to-facilitate-interoperability-with-outlook-pst-data-files.aspx&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10015554" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/vikas/archive/tags/Outlook/">Outlook</category><category domain="http://blogs.msdn.com/b/vikas/archive/tags/Samples/">Samples</category><category domain="http://blogs.msdn.com/b/vikas/archive/tags/DevMsgTeam/">DevMsgTeam</category><category domain="http://blogs.msdn.com/b/vikas/archive/tags/CoolStuff/">CoolStuff</category><category domain="http://blogs.msdn.com/b/vikas/archive/tags/SDK/">SDK</category><category domain="http://blogs.msdn.com/b/vikas/archive/tags/PST/">PST</category><category domain="http://blogs.msdn.com/b/vikas/archive/tags/Open+Source/">Open Source</category><category domain="http://blogs.msdn.com/b/vikas/archive/tags/CodePlex/">CodePlex</category></item><item><title>WebDAV can expose private meetings/appointments to users who should not see them.</title><link>http://blogs.msdn.com/b/vikas/archive/2010/04/07/webdav-can-expose-private-meetings-appointments-to-users-who-should-not-see-them.aspx</link><pubDate>Wed, 07 Apr 2010 10:49:15 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9991658</guid><dc:creator>Vikas - MSFT</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/vikas/rsscomments.aspx?WeblogPostID=9991658</wfw:commentRss><comments>http://blogs.msdn.com/b/vikas/archive/2010/04/07/webdav-can-expose-private-meetings-appointments-to-users-who-should-not-see-them.aspx#comments</comments><description>&lt;p&gt;This is quite frequently asked and with surprise &amp;amp; worries mixed together… Why WebDAV is able to see my Private meetings/appointments? Isn’t this a security breach? How can I get it fixed?&lt;/p&gt;  &lt;p&gt;The answer is very simple, not this is not a bug. This is how it should work and then comes a even bigger surprise “FTW” from the receiver of this message. &lt;/p&gt;  &lt;p&gt;Let’s understand why this is so and what you should do and what you should not do to prevent such scenarios.&lt;/p&gt;  &lt;p&gt;There is no such thing as Private appointments/meetings in real sense and it’s a feature of the email client like Outlook/OWA. Exchange Server treat all items as same. Every calendar item has a field name “Sensitivity” which can store a value of “Normal”, “Personal”, “Private” &amp;amp; “Confidential”.&lt;/p&gt;  &lt;p&gt;In case of Private appointments this is marked as “Private” which allow the email client (Outlook/OWA) to decide if this should be displayed to the user or not. With that said, this is decided at the business logic layer in the email client. &lt;/p&gt;  &lt;p&gt;Now coming to the WebDAV, it has no business logic of itself and gives the requestor a raw output of the items/properties and leave it up to the client how they want to process those items. If you are writing a email client and want to have the same behavior as Outlook does then you should honor the value of Sensitivity before displaying the Item to the user.&lt;/p&gt;  &lt;p&gt;Exchange Server does not support Item level permissions and this is just a way to give users some sort of liberty to share restricted items when all the users are using Outlook or OWA. If you have users in your organization which may use other email clients then you should not give them Read access to your calendar/Tasks folder. This will prevent them from reading your private (or not so private?) items.&lt;/p&gt;  &lt;p&gt;This has been documented here as well:&lt;/p&gt;  &lt;p&gt;Outlook 2007: &lt;a title="http://office.microsoft.com/en-us/outlook/HA100750811033.aspx?pid=CH100788801033" href="http://office.microsoft.com/en-us/outlook/HA100750811033.aspx?pid=CH100788801033"&gt;http://office.microsoft.com/en-us/outlook/HA100750811033.aspx?pid=CH100788801033&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Outlook 2003: &lt;a title="http://office.microsoft.com/en-us/outlook/HP030741291033.aspx" href="http://office.microsoft.com/en-us/outlook/HP030741291033.aspx"&gt;http://office.microsoft.com/en-us/outlook/HP030741291033.aspx&lt;/a&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9991658" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/vikas/archive/tags/Exchange/">Exchange</category><category domain="http://blogs.msdn.com/b/vikas/archive/tags/Outlook/">Outlook</category><category domain="http://blogs.msdn.com/b/vikas/archive/tags/Messaging/">Messaging</category><category domain="http://blogs.msdn.com/b/vikas/archive/tags/WEBDAV/">WEBDAV</category><category domain="http://blogs.msdn.com/b/vikas/archive/tags/OOM/">OOM</category><category domain="http://blogs.msdn.com/b/vikas/archive/tags/DevMsgTeam/">DevMsgTeam</category><category domain="http://blogs.msdn.com/b/vikas/archive/tags/GetItem/">GetItem</category><category domain="http://blogs.msdn.com/b/vikas/archive/tags/OWA/">OWA</category></item><item><title>BUG: .NET 4.0 (System.Net.Mail) Unable to send emails with large attachments (more than 3MB)</title><link>http://blogs.msdn.com/b/vikas/archive/2010/04/05/bug-net-4-0-system-net-mail-unable-to-send-emails-with-large-attachments-more-than-3mb.aspx</link><pubDate>Mon, 05 Apr 2010 05:14:11 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9990473</guid><dc:creator>Vikas - MSFT</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/vikas/rsscomments.aspx?WeblogPostID=9990473</wfw:commentRss><comments>http://blogs.msdn.com/b/vikas/archive/2010/04/05/bug-net-4-0-system-net-mail-unable-to-send-emails-with-large-attachments-more-than-3mb.aspx#comments</comments><description>&lt;p&gt;This is probably the first bug reported by customer so far for System.Net.Mail Class in .NET 4.0 Framework, or at least the first one I worked on. This was pretty straight forward repro and I did not had to do much to reproduce the issue locally.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;pre class="csharpcode"&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; Main(&lt;span class="kwrd"&gt;string&lt;/span&gt;[] args)

        {

            SmtpClient client = &lt;span class="kwrd"&gt;new&lt;/span&gt; SmtpClient(&lt;span class="str"&gt;&amp;quot;contoso_smtp_server&amp;quot;&lt;/span&gt;);
            client.Credentials = &lt;span class="kwrd"&gt;new&lt;/span&gt; System.Net.NetworkCredential(&lt;span class="str"&gt;&amp;quot;User1&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;Password&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;contoso&amp;quot;&lt;/span&gt;);

 
            MailMessage msg = &lt;span class="kwrd"&gt;new&lt;/span&gt; MailMessage(&lt;span class="str"&gt;&amp;quot;user1@contoso.com&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;user2@contoso.com&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;Large Attachment Mail&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;Large Attachment - Test Body&amp;quot;&lt;/span&gt;);

            Attachment attachment = &lt;span class="kwrd"&gt;new&lt;/span&gt; Attachment(&lt;span class="str"&gt;@&amp;quot;d:\3mb.dat&amp;quot;&lt;/span&gt;);
            msg.Attachments.Add(attachment);

            client.Send(msg);

      
        }&lt;/pre&gt;

&lt;p&gt;&lt;style type="text/css"&gt;

.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;That was the simplest code you could possibly write to send out email using SNM but the problem is it Fail with an “Error in sending email” message. So I looked around what was happening and found that the problem was not directly related to SNM but its underlying classes and specifically the Base64Encoding class which was used as default method of encoding emails attachments while sending. &lt;/p&gt;

&lt;p&gt;That saved me more troubleshooting and I changed the way the attachments were being encoded from Base64 to 7Bit and it worked like charm.&lt;/p&gt;

&lt;p&gt;So all you need to do is add any of the following line to your code to make it work.&lt;/p&gt;

&lt;pre class="csharpcode"&gt;&lt;span class="rem"&gt;// Any &amp;quot;one&amp;quot; of those two code section will work&lt;/span&gt;
attachment.TransferEncoding = System.Net.Mime.TransferEncoding.QuotedPrintable;&lt;/pre&gt;

&lt;pre class="csharpcode"&gt;attachment.TransferEncoding = System.Net.Mime.TransferEncoding.SevenBit;&lt;/pre&gt;
&lt;style type="text/css"&gt;

.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;

&lt;p&gt;Since .Net 4.0 is still in beta there will not be any hotfix for this until we hit the RTM and there is no official word on when this bug will be fixed. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;UPDATE – 7/20/2010&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;We have an official fix and here is more information about it.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://blogs.msdn.com/b/vikas/archive/2010/07/21/hotfix-net-4-0-system-net-mail-unable-to-send-emails-with-large-attachments-more-than-3mb.aspx"&gt;http://blogs.msdn.com/b/vikas/archive/2010/07/21/hotfix-net-4-0-system-net-mail-unable-to-send-emails-with-large-attachments-more-than-3mb.aspx&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;UPDATE - 7/21/2010&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;If you prefer not to contact PSS, you can download the hotfix by yourself from the following link.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://connect.microsoft.com/VisualStudio/Downloads/DownloadDetails.aspx?DownloadID=30226"&gt;http://connect.microsoft.com/VisualStudio/Downloads/DownloadDetails.aspx?DownloadID=30226&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Happy Debugging!!!&lt;/em&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9990473" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/vikas/archive/tags/Workarounds/">Workarounds</category><category domain="http://blogs.msdn.com/b/vikas/archive/tags/BUG/">BUG</category><category domain="http://blogs.msdn.com/b/vikas/archive/tags/System-Net-Mail/">System.Net.Mail</category><category domain="http://blogs.msdn.com/b/vikas/archive/tags/DevMsgTeam/">DevMsgTeam</category><category domain="http://blogs.msdn.com/b/vikas/archive/tags/Base64/">Base64</category><category domain="http://blogs.msdn.com/b/vikas/archive/tags/Announcements/">Announcements</category><category domain="http://blogs.msdn.com/b/vikas/archive/tags/Supportability/">Supportability</category></item><item><title>Did you like the makeover?</title><link>http://blogs.msdn.com/b/vikas/archive/2010/01/23/did-you-like-the-makeover.aspx</link><pubDate>Sat, 23 Jan 2010 00:54:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9952263</guid><dc:creator>Vikas - MSFT</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/vikas/rsscomments.aspx?WeblogPostID=9952263</wfw:commentRss><comments>http://blogs.msdn.com/b/vikas/archive/2010/01/23/did-you-like-the-makeover.aspx#comments</comments><description>&lt;p&gt;After couple of mails exchange with my earlier web hosting provider, I decided to save near 400 bucks for the images &amp;amp; other lots of junk data I had on my web hosting account. I decided to move my site to &lt;a href="http://www.adhost.com/winisp" title="http://www.adhost.com/winisp" mce_href="http://www.adhost.com/winisp"&gt;http://www.adhost.com/winisp&lt;/a&gt; who proudly hosted my website for FREE being a Microsoft Employee… yeah we do get all those perks :)&lt;/p&gt;  &lt;p&gt;So did you like the new look of my website.. please leave the comments on the new blog header image. I spent 200 hours on that image working through MSPAINT and then adjusting all the text together. Naahhh… I am lying. I found a wonderful tool to make cloud images from the Text - &lt;a href="http://www.wordle.net" mce_href="http://www.wordle.net"&gt;http://www.wordle.net&lt;/a&gt;. It let’s you create those wonderful images on the fly and even my kid can make them (if I had any), oh by the way I am still single ;)&lt;/p&gt;  &lt;p&gt;So, my life is little busy these days thus not able to write any new blogs but I have couple of topics in my mind. Lots of samples to blog but time is the constraint. I should be able to start writing more from February. &lt;/p&gt;  &lt;p&gt;Till then, happy reading and happy debugging!&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9952263" width="1" height="1"&gt;</description></item><item><title>Blog Problem: Where are the images? </title><link>http://blogs.msdn.com/b/vikas/archive/2010/01/04/blog-problem-where-are-the-images.aspx</link><pubDate>Mon, 04 Jan 2010 20:17:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9943562</guid><dc:creator>Vikas - MSFT</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/vikas/rsscomments.aspx?WeblogPostID=9943562</wfw:commentRss><comments>http://blogs.msdn.com/b/vikas/archive/2010/01/04/blog-problem-where-are-the-images.aspx#comments</comments><description>&lt;p&gt;A very Happy New Year 2010 to you all.&lt;br&gt;&lt;/p&gt;&lt;p&gt;I had a really bad day while I was making some changes to my personal web hosting account with GoDaddy and accidentally canceled my web hosting account. With the immediate effect my website was no longer accessible and all the images/data hosted on the server is now 'inaccessible'... that's not a good start to the new year. Most of my blog posts had images hosted on my server and now they all are gone :-(. Even the site logo, to which I had put extra efforts is now gone. &lt;/p&gt;&lt;p&gt;I spoke to GoDaddy and they are asking me to pay them 150 bucks to access my own data... grrrrr!!!!! &lt;/p&gt;&lt;p&gt;Let's see if I am able to&amp;nbsp; get my data back, and the images as well for this blog. &lt;/p&gt;&lt;p&gt;&lt;i&gt;&lt;b&gt;Happy Debugging!!!&lt;/b&gt;&lt;/i&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9943562" width="1" height="1"&gt;</description></item><item><title>BUG: Outlook 2003: Custom Forms: You cannot use Custom Actions to Reply/Forward Appointment Items</title><link>http://blogs.msdn.com/b/vikas/archive/2009/11/19/bug-outlook-2003-custom-forms-you-cannot-use-custom-actions-to-reply-forward-appointment-items.aspx</link><pubDate>Thu, 19 Nov 2009 22:48:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9925846</guid><dc:creator>Vikas - MSFT</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/vikas/rsscomments.aspx?WeblogPostID=9925846</wfw:commentRss><comments>http://blogs.msdn.com/b/vikas/archive/2009/11/19/bug-outlook-2003-custom-forms-you-cannot-use-custom-actions-to-reply-forward-appointment-items.aspx#comments</comments><description>&lt;P&gt;I had been working on this issue lately where customer was using Outlook 2003 to create custom actions. It is not very commonly used thing so you might not know about it, at least I was not very much aware about it.&lt;/P&gt;
&lt;P&gt;To do that, you have to open a form in design mode and go to Actions tab, hit the New action button down in the bottom left corner. &lt;/P&gt;
&lt;P&gt;Give it the name of your choice and select “Appointment” type form from “Standard Forms” template. It will look something like this..&lt;/P&gt;
&lt;P&gt;&lt;A href="http://www.vikasverma.com/blogimages/BUGOutlook2003CustomFormsYoucannotuseCus_3C5A/image.png" mce_href="http://www.vikasverma.com/blogimages/BUGOutlook2003CustomFormsYoucannotuseCus_3C5A/image.png"&gt;&lt;/A&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Publish this form and send it to your self.&lt;/P&gt;
&lt;P&gt;Once sent, it will come up like this to your inbox, see the “CustomAction” button (this is the name that you provided)&lt;/P&gt;
&lt;P&gt;&lt;A href="http://www.vikasverma.com/blogimages/BUGOutlook2003CustomFormsYoucannotuseCus_3C5A/image_3.png" mce_href="http://www.vikasverma.com/blogimages/BUGOutlook2003CustomFormsYoucannotuseCus_3C5A/image_3.png"&gt;&lt;/A&gt;&amp;nbsp;&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Once you click this button, it should open a new Appointment form like when you do a forward or reply button, but instead of doing that it shows an error.&lt;/P&gt;
&lt;P&gt;&lt;I&gt;Error: "Could not complete the operation. One or more parameter values are not valid"&lt;/I&gt;&lt;/P&gt;
&lt;P&gt;&lt;A href="http://www.vikasverma.com/blogimages/BUGOutlook2003CustomFormsYoucannotuseCus_3C5A/image_4.png" mce_href="http://www.vikasverma.com/blogimages/BUGOutlook2003CustomFormsYoucannotuseCus_3C5A/image_4.png"&gt;&lt;/A&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I found this problem to be related with build number &lt;STRONG&gt;&lt;EM&gt;Outlook 2003 11.8313.xxxx (SP3) &lt;/EM&gt;&lt;/STRONG&gt;and it does not reproduce with the standard install of Outlook 2003 SP3 (build 11.8169.8172). &lt;/P&gt;
&lt;P&gt;So who caused it? Looks like that a latest security update has caused this issue.&lt;/P&gt;
&lt;P&gt;&lt;U&gt;&lt;STRONG&gt;&lt;A href="http://support.microsoft.com/kb/973705" mce_href="http://support.microsoft.com/kb/973705"&gt;Security Update for Microsoft Office Outlook 2003 (KB973705)&lt;/A&gt;&lt;/STRONG&gt;&lt;/U&gt;&lt;/P&gt;
&lt;P&gt;I have tried to uninstall this update and it started to work just fine, installed it back and it breaks again.&lt;/P&gt;
&lt;P&gt;Since Outlook 2003 is out of commercial support lifecycle, you may or may not get an hotfix for this. If you have a business justification and this issue is causing trouble to you then please do not hesitate to contact me. &lt;/P&gt;
&lt;P&gt;If we ever decide to fix it, then I will update this post and update you all.&lt;/P&gt;
&lt;P&gt;PS.: The only possible workaround, though highly not recommended, is to uninstall the security update but be aware of the risks of doing so.&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;Happy Debugging!!!&lt;/EM&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9925846" width="1" height="1"&gt;</description></item><item><title>BUG: Outlook: Word: A signature to death!</title><link>http://blogs.msdn.com/b/vikas/archive/2009/10/09/bug-outlook-word-a-signature-to-death.aspx</link><pubDate>Fri, 09 Oct 2009 21:16:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9905616</guid><dc:creator>Vikas - MSFT</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/vikas/rsscomments.aspx?WeblogPostID=9905616</wfw:commentRss><comments>http://blogs.msdn.com/b/vikas/archive/2009/10/09/bug-outlook-word-a-signature-to-death.aspx#comments</comments><description>&lt;P&gt;I have been working lately with this customer who was trying to create new signature files under %APPDATA%\Microsoft\Signatures folder which will be used by Outlook 2007 (SP2) but what we discovered is that whenever they try to use it, it used to crash Outlook. &lt;/P&gt;
&lt;P&gt;This was the content of the HTML Signature file that we were using.&lt;/P&gt;&lt;PRE class=csharpcode&gt;&lt;SPAN class=kwrd&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN class=html&gt;HTML&lt;/SPAN&gt;&lt;SPAN class=kwrd&gt;&amp;gt;&lt;/SPAN&gt;
&lt;SPAN class=kwrd&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN class=html&gt;BODY&lt;/SPAN&gt;&lt;SPAN class=kwrd&gt;&amp;gt;&lt;/SPAN&gt;
&lt;SPAN class=kwrd&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN class=html&gt;IMG&lt;/SPAN&gt; &lt;SPAN class=attr&gt;SRC&lt;/SPAN&gt;&lt;SPAN class=kwrd&gt;="http://www.server.com/logo.jpg"&lt;/SPAN&gt; &lt;SPAN class=kwrd&gt;/&amp;gt;&lt;/SPAN&gt;
&lt;SPAN class=kwrd&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN class=html&gt;BODY&lt;/SPAN&gt;&lt;SPAN class=kwrd&gt;&amp;gt;&lt;/SPAN&gt;
&lt;SPAN class=kwrd&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN class=html&gt;HTML&lt;/SPAN&gt;&lt;SPAN class=kwrd&gt;&amp;gt;&lt;/SPAN&gt;&lt;/PRE&gt;
&lt;STYLE type=text/css&gt;
.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/STYLE&gt;

&lt;P&gt;Let’s save this HTML file to %APPDATA%\Microsoft\Signatures\CrashMe.htm&lt;/P&gt;
&lt;P&gt;Now next thing you need to do is make sure that Outlook’s Mail Format is HTML&lt;/P&gt;
&lt;P&gt;&lt;A href="http://www.vikasverma.com/blogimages/BUGOutlookWordAsignaturetodeath_261E/image.png" mce_href="http://www.vikasverma.com/blogimages/BUGOutlookWordAsignaturetodeath_261E/image.png"&gt;&lt;/A&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Next you need to make sure that “Typing replaces selected text” is unchecked under Tools-&amp;gt;Options-&amp;gt;Mail Format-&amp;gt;Editor Options-&amp;gt;Advanced&lt;/P&gt;
&lt;P&gt;&lt;A href="http://www.vikasverma.com/blogimages/BUGOutlookWordAsignaturetodeath_261E/image_3.png" mce_href="http://www.vikasverma.com/blogimages/BUGOutlookWordAsignaturetodeath_261E/image_3.png"&gt;&lt;/A&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Once you done it all, now we load a new email item and insert our signature into the body and just try to save the message, and it will crash the Outlook.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;U&gt;Root Cause:&lt;/U&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;I am not very much sure but its not Outlook’s fault at all, Outlook is just a victim and its Word libraries at fault which are used to Edit the email message.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;U&gt;Workaround:&lt;/U&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Since there is no solution at this moment, here are your workarounds.&lt;/P&gt;
&lt;P&gt;1) Create the signature file using Outlook’s Signature Designer&lt;/P&gt;
&lt;P&gt;2) Do not use HTML as default format for emails, either use RTF or Text&lt;/P&gt;
&lt;P&gt;3) Do not uncheck the ‘Typing replaces selected text’ option, keep it selected&lt;/P&gt;
&lt;P&gt;The word team is working on it and I shall update you all when I have some more information on this.&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;Happy Debugging.&lt;/EM&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9905616" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/vikas/archive/tags/Outlook/">Outlook</category><category domain="http://blogs.msdn.com/b/vikas/archive/tags/OOM/">OOM</category><category domain="http://blogs.msdn.com/b/vikas/archive/tags/Workarounds/">Workarounds</category><category domain="http://blogs.msdn.com/b/vikas/archive/tags/BUG/">BUG</category><category domain="http://blogs.msdn.com/b/vikas/archive/tags/DevMsgTeam/">DevMsgTeam</category><category domain="http://blogs.msdn.com/b/vikas/archive/tags/Announcements/">Announcements</category></item><item><title>3 years of same, yet different work and then a responsibility upgrade, a good one.</title><link>http://blogs.msdn.com/b/vikas/archive/2009/10/02/3-years-of-same-yet-different-work-and-then-a-responsibility-upgrade-a-good-one.aspx</link><pubDate>Sat, 03 Oct 2009 01:01:12 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9902600</guid><dc:creator>Vikas - MSFT</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/vikas/rsscomments.aspx?WeblogPostID=9902600</wfw:commentRss><comments>http://blogs.msdn.com/b/vikas/archive/2009/10/02/3-years-of-same-yet-different-work-and-then-a-responsibility-upgrade-a-good-one.aspx#comments</comments><description>&lt;p align="justify"&gt;It’s been 3 very long and cherished years of my life as I complete my 3 years of career at Microsoft India GTSC, based out of Bangalore, India.&lt;/p&gt;  &lt;p align="justify"&gt;&lt;a href="http://www.vikasverma.com/blogimages/3yearsofsameyetdifferentworkandthenares_316A/clip_image002.jpg"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; margin-left: 0px; border-top: 0px; margin-right: 0px; border-right: 0px" title="clip_image002" border="0" hspace="12" alt="clip_image002" align="left" src="http://www.vikasverma.com/blogimages/3yearsofsameyetdifferentworkandthenares_316A/clip_image002_thumb.jpg" width="99" height="100" /&gt;&lt;/a&gt;&lt;i&gt;A Bachelor in Computer Sciences was just a degree I acquired to certify my geek level. I was much more interested in practical knowledge than theoretical and decided to work a freelance along during my final years of graduation. After 4 years of working in different roles in IT industry,&amp;#160; as an independent consultant, system administrator , business analyst or software engineer, I got the opportunity to work with the Industry leader and decided to join Microsoft India GTSC &amp;amp; Developer Messaging Team in May 2006 as Support Engineer.&lt;/i&gt;&lt;/p&gt;  &lt;p align="justify"&gt;&lt;i&gt;&lt;/i&gt;&lt;/p&gt;  &lt;p align="justify"&gt;&lt;i&gt; Joining Microsoft was the beginning of my career in the real sense of the word, working with great minds &amp;amp; mentors brought me up to this level. Exchange has always been my favorite, seeing it grow from 5.5 to E14 and being part of this growth brings me immense pleasure. I am very excited to take up the role of &lt;strong&gt;Support Escalation Engineer&lt;/strong&gt; and hoping to continue my legacy of providing the best and exceeding the limits. &lt;/i&gt;&lt;/p&gt;  &lt;p align="justify"&gt;Happy &lt;strike&gt;Coding&lt;/strike&gt; &lt;em&gt;Debugging!!!&lt;/em&gt;&lt;/p&gt;  &lt;p align="justify"&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9902600" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/vikas/archive/tags/DevMsgTeam/">DevMsgTeam</category><category domain="http://blogs.msdn.com/b/vikas/archive/tags/Personal/">Personal</category></item><item><title>Hey!!! Do not forget to “Include” me… Ok?</title><link>http://blogs.msdn.com/b/vikas/archive/2009/10/02/hey-do-not-forget-to-include-me-ok.aspx</link><pubDate>Fri, 02 Oct 2009 22:25:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9902610</guid><dc:creator>Vikas - MSFT</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/vikas/rsscomments.aspx?WeblogPostID=9902610</wfw:commentRss><comments>http://blogs.msdn.com/b/vikas/archive/2009/10/02/hey-do-not-forget-to-include-me-ok.aspx#comments</comments><description>&lt;P&gt;I am not talking about some Friday night dinner or the latest buff around the corner. I am talking about the “Include” tab on Outlook 2007’s Ribbon UI.&lt;/P&gt;
&lt;P&gt;Recently I got this case where customer developed a custom email form but he was not able to use the “Include” tab to add attachments to the email, as you can see from the following screenshot.&lt;/P&gt;
&lt;P&gt;&lt;A href="http://www.vikasverma.com/blogimages/HeyDonotforgettoIncludemeOk_371F/image.png" mce_href="http://www.vikasverma.com/blogimages/HeyDonotforgettoIncludemeOk_371F/image.png"&gt;&lt;/A&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;All the buttons were grayed-out, but why? Customer had no clue, well that’s why he called Microsoft, isn’t it? &lt;/P&gt;
&lt;P&gt;I tried to reproduce it locally, but first I opened up the custom form which customer was using and the initial discovery was that there was no message body included to it. That ring some bells to me, but I ignored that for the moment and tried to dig if there is any property that I can set to disable that Include tab but there were none. I also checked if there was any code behind, but there was none.&lt;/P&gt;
&lt;P&gt;Now that I know what was present in form, and what was not, I decided to start from scratch and created a new form. And discovered the following.&lt;/P&gt;
&lt;P&gt;The issue here is that the customer has &lt;I&gt;&lt;U&gt;deleted&lt;/U&gt;&lt;/I&gt; the standard “Message” field (which is used to write the email content) from the message, this field is also used to insert attachments, business cards, calendar &amp;amp; other stuff by Outlook.&lt;/P&gt;&lt;PRE class=csharpcode&gt;&lt;U&gt;&lt;STRONG&gt;Repro Steps&lt;/STRONG&gt;&lt;/U&gt;

1) Open a new email inspector
2) Go to Developers Tab
3) Hit Design Mode
4) Delete the Message body
5) Run the Form and you will see the “Include” as grayed out.&lt;/PRE&gt;
&lt;P&gt;Good now we know that was the culprit, but I do not need that message body on my form.. how do I fix it?&lt;/P&gt;&lt;PRE class=csharpcode&gt;&lt;STRONG&gt;&lt;U&gt;Workaround&lt;/U&gt;&lt;/STRONG&gt;

1) We need to add the Message Body back to the form
2) Open the form in Design Mode again and drag &amp;amp; drop the “Message” back to the form 
3) Now you might not want that “Message Body” to be visible, but if you set the “Message Body” visible state
   to false then you will again not be able to add attachments as the body is not visible.
4) Another workaround, you need to keep the visible state as visible but make body’s height &amp;amp; width set to 0 to hide it from screen&lt;/PRE&gt;
&lt;P&gt;&lt;EM&gt;Bingo!! &lt;/EM&gt;That was it.. yeah now it works.&lt;/P&gt;
&lt;P&gt;..but what a minute..why? &lt;/P&gt;
&lt;P&gt;Overall, that's a general &lt;EM&gt;&lt;U&gt;design decision&lt;/U&gt; &lt;/EM&gt;they made a long time ago. That first page of the message form has a lot of dependencies on commands, etc. So once you do a "simple" thing like delete the body control, you run some &lt;EM&gt;big risks&lt;/EM&gt;. It's up to the form developer to really scope all of that out, disable other commands if they need to, etc. &lt;/P&gt;
&lt;P&gt;&lt;EM&gt;Happy Debugging!!!&lt;/EM&gt;&lt;/P&gt;
&lt;STYLE type=text/css&gt;
.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/STYLE&gt;

&lt;STYLE type=text/css&gt;
.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/STYLE&gt;

&lt;STYLE type=text/css&gt;
.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/STYLE&gt;

&lt;STYLE type=text/css&gt;
.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/STYLE&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9902610" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/vikas/archive/tags/Outlook/">Outlook</category><category domain="http://blogs.msdn.com/b/vikas/archive/tags/Workarounds/">Workarounds</category><category domain="http://blogs.msdn.com/b/vikas/archive/tags/BUG/">BUG</category><category domain="http://blogs.msdn.com/b/vikas/archive/tags/DevMsgTeam/">DevMsgTeam</category><category domain="http://blogs.msdn.com/b/vikas/archive/tags/Custom+Forms/">Custom Forms</category></item><item><title>Using CDOSYS from .Net?! Be Careful with Attachments!</title><link>http://blogs.msdn.com/b/vikas/archive/2009/09/18/using-cdosys-from-net-be-careful-with-attachments.aspx</link><pubDate>Fri, 18 Sep 2009 23:53:16 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9896967</guid><dc:creator>Vikas - MSFT</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/vikas/rsscomments.aspx?WeblogPostID=9896967</wfw:commentRss><comments>http://blogs.msdn.com/b/vikas/archive/2009/09/18/using-cdosys-from-net-be-careful-with-attachments.aspx#comments</comments><description>&lt;p&gt;First off there is no justification why you should be using Cdosys directly, you should use System.Web.Mail if you are still on .Net 1.1 otherwise you should upgrade to System.Net.Mail.&lt;/p&gt;  &lt;p&gt;Anyways, the problem I want to mention is when you use CDOSYS.dll directly from .Net 1.1 or 2.0 or even 3.5, the problem is with memory management.&lt;/p&gt;  &lt;p&gt;Take this sample code..&lt;/p&gt;  &lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;Function&lt;/span&gt; SendMail()
        &lt;span class="kwrd"&gt;Dim&lt;/span&gt; iMsg &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;New&lt;/span&gt; CDO.Message
        &lt;span class="kwrd"&gt;With&lt;/span&gt; iMsg
            .&lt;span class="kwrd"&gt;To&lt;/span&gt; = &lt;span class="str"&gt;&amp;quot;test@server.com&amp;quot;&lt;/span&gt;
            .From = &lt;span class="str"&gt;&amp;quot;test@server.com&amp;quot;&lt;/span&gt;
            .Subject = &lt;span class="str"&gt;&amp;quot;Hello, This is a test mail !&amp;quot;&lt;/span&gt;
            .HTMLBody = &lt;span class="str"&gt;&amp;quot;&amp;lt;b&amp;gt;Hi&amp;lt;/b&amp;gt;, &amp;lt;i&amp;gt;This is a test &amp;lt;u&amp;gt;HTML&amp;lt;/u&amp;gt; mail !&amp;lt;/i&amp;gt;&amp;quot;&lt;/span&gt;
            .AddAttachment(&lt;span class="str"&gt;&amp;quot;d:\attachment.txt&amp;quot;&lt;/span&gt;)
        &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;With&lt;/span&gt;
        iMsg = &lt;span class="kwrd"&gt;Nothing&lt;/span&gt;
&lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;Function&lt;/span&gt;&lt;/pre&gt;
&lt;style type="text/css"&gt;
.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;

&lt;p&gt;Looks short and sweet like there is nothing wrong with this, think again! &lt;/p&gt;

&lt;p&gt;This code is holding the reference to File Handle and not going to release it even after you set &lt;em&gt;&lt;strong&gt;iMsg &lt;/strong&gt;= &lt;span class="kwrd"&gt;&lt;strong&gt;Nothing&lt;/strong&gt;&lt;/span&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;&lt;span class="kwrd"&gt;&lt;strong&gt;The solution here is to release the COM Object (CDOSYS) properly by calling GC.Collect() followed by GC.WaitForPendingFinalizers() but outside of this code block.&lt;/strong&gt;&lt;/span&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;span class="kwrd"&gt;Now consider this sample…&lt;/span&gt;&lt;/p&gt;

&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;Function&lt;/span&gt; SafeSendMail()
        SendMail()
        Gc.Collect()
        GC.WaitForPendingFinalizers()
&lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;Function&lt;/span&gt;

&lt;span class="kwrd"&gt;Function&lt;/span&gt; SendMail()
        &lt;span class="kwrd"&gt;Dim&lt;/span&gt; iMsg &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;New&lt;/span&gt; CDO.Message
        &lt;span class="kwrd"&gt;With&lt;/span&gt; iMsg
            .&lt;span class="kwrd"&gt;To&lt;/span&gt; = &lt;span class="str"&gt;&amp;quot;test@server.com&amp;quot;&lt;/span&gt;
            .From = &lt;span class="str"&gt;&amp;quot;test@server.com&amp;quot;&lt;/span&gt;
            .Subject = &lt;span class="str"&gt;&amp;quot;Hello, This is a test mail !&amp;quot;&lt;/span&gt;
            .HTMLBody = &lt;span class="str"&gt;&amp;quot;&amp;lt;b&amp;gt;Hi&amp;lt;/b&amp;gt;, &amp;lt;i&amp;gt;This is a test &amp;lt;u&amp;gt;HTML&amp;lt;/u&amp;gt; mail !&amp;lt;/i&amp;gt;&amp;quot;&lt;/span&gt;
            .AddAttachment(&lt;span class="str"&gt;&amp;quot;d:\attachment.txt&amp;quot;&lt;/span&gt;)
        &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;With&lt;/span&gt;
        iMsg = &lt;span class="kwrd"&gt;Nothing&lt;/span&gt;
&lt;span class="kwrd"&gt;End&lt;/span&gt; Function&lt;/pre&gt;
&lt;style type="text/css"&gt;
.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;This will make sure that the CDOSYS is collected as soon as you leave the SendMail block otherwise you won’t be able to access the file for writing/deleting it.

&lt;p&gt;Happy &lt;em&gt;De&lt;/em&gt;&lt;em&gt;bugging!!! &lt;/em&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9896967" width="1" height="1"&gt;</description></item><item><title>Exchange Web Services 101 : Let’s get started!</title><link>http://blogs.msdn.com/b/vikas/archive/2009/06/20/exchange-web-services-101-let-s-get-started.aspx</link><pubDate>Sat, 20 Jun 2009 06:30:26 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9792769</guid><dc:creator>Vikas - MSFT</dc:creator><slash:comments>6</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/vikas/rsscomments.aspx?WeblogPostID=9792769</wfw:commentRss><comments>http://blogs.msdn.com/b/vikas/archive/2009/06/20/exchange-web-services-101-let-s-get-started.aspx#comments</comments><description>&lt;p&gt;Want to learn Exchange Web Service but not sure how and from where? Here are the few articles that I share very often with partners and customers who want to learn more about Exchange Web Services.&lt;/p&gt;  &lt;p&gt;Undoubtedly there is so much information out there and that’s too in such a short span of time. You better start with Inside Exchange Web Services book from MSPRESS and then the rest of the articles can be utilized.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;MSPRESS BOOK &lt;/b&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Inside Microsoft Exchange Web Services &lt;/li&gt; &lt;/ul&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;a href="http://www.microsoft.com/learning/en/us/books/10724.aspx"&gt;http://www.microsoft.com/learning/en/us/books/10724.aspx&lt;/a&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&lt;i&gt;Note: This book target Exchange 2007 RTM and does not talk about features introduced in Exchange 2007 Sp1 &amp;amp; later&lt;/i&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Common EWS Operations &lt;/li&gt; &lt;/ul&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;a href="http://blogs.msdn.com/vikas/archive/2007/07/27/howto-getfolder-finditem-restriction-getitem.aspx"&gt;http://blogs.msdn.com/vikas/archive/2007/07/27/howto-getfolder-finditem-restriction-getitem.aspx&lt;/a&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;ul&gt;   &lt;li&gt;Working with attachments &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/vikas/archive/2007/10/16/howto-ews-add-attachments-to-existing-items-on-server.aspx"&gt;http://blogs.msdn.com/vikas/archive/2007/10/16/howto-ews-add-attachments-to-existing-items-on-server.aspx&lt;/a&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Links on Common Exchange Web Services (EWS) Questions &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/webdav_101/archive/2008/10/02/links-on-common-exchange-web-services-ews-questions.aspx"&gt;http://blogs.msdn.com/webdav_101/archive/2008/10/02/links-on-common-exchange-web-services-ews-questions.aspx&lt;/a&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Generating list of calendar items using EWS &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/webdav_101/archive/2009/01/10/sample-howto-display-a-list-of-calendar-items-in-listview-using-ews.aspx"&gt;http://blogs.msdn.com/webdav_101/archive/2009/01/10/sample-howto-display-a-list-of-calendar-items-in-listview-using-ews.aspx&lt;/a&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Understanding and Fixing Slow Exchange Web Services Code &lt;/li&gt; &lt;/ul&gt;  &lt;blockquote&gt;   &lt;p&gt;Part 1&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;a href="http://blogs.msdn.com/mstehle/archive/2008/07/17/outbox-understanding-and-fixing-slow-exchange-web-services-code-part-1.aspx"&gt;http://blogs.msdn.com/mstehle/archive/2008/07/17/outbox-understanding-and-fixing-slow-exchange-web-services-code-part-1.aspx&lt;/a&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;Part 2&lt;/p&gt;    &lt;p&gt;&lt;a href="http://blogs.msdn.com/mstehle/archive/2008/08/13/outbox-understanding-and-fixing-slow-exchange-web-services-code-part-2.aspx"&gt;http://blogs.msdn.com/mstehle/archive/2008/08/13/outbox-understanding-and-fixing-slow-exchange-web-services-code-part-2.aspx&lt;/a&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&lt;b&gt;&lt;u&gt;Exchange Notifications&lt;/u&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;u&gt;&lt;/u&gt;&lt;/b&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Exchange Web Services – Notification Subsystem &lt;/li&gt; &lt;/ul&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;a href="http://blogs.msdn.com/vikas/archive/2007/08/28/ews-exchange-2007-notification-subsystem.aspx"&gt;http://blogs.msdn.com/vikas/archive/2007/08/28/ews-exchange-2007-notification-subsystem.aspx&lt;/a&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;ul&gt;   &lt;li&gt;Transitioning to Exchange Web Services Notifications (from Store Events Sinks) &lt;/li&gt; &lt;/ul&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;a href="http://blogs.msdn.com/exchangedev/archive/2008/07/24/transitioning-to-exchange-web-services-notifications.aspx"&gt;http://blogs.msdn.com/exchangedev/archive/2008/07/24/transitioning-to-exchange-web-services-notifications.aspx&lt;/a&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;b&gt;&lt;i&gt;Note: Notification Watermarks are valid for 30 days after which they expire&lt;/i&gt;&lt;/b&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&lt;b&gt;&lt;u&gt;Exchange Managed API&lt;/u&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Videos –&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;a href="http://channel9.msdn.com/pdc2008/BB46/"&gt;http://channel9.msdn.com/pdc2008/BB46/&lt;/a&gt;&lt;/p&gt;    &lt;p&gt;&lt;a href="http://msexchangeteam.com/archive/2009/03/24/450892.aspx"&gt;http://msexchangeteam.com/archive/2009/03/24/450892.aspx&lt;/a&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;ul&gt;   &lt;li&gt;Introducing the EWS Managed API 1.0 &lt;/li&gt; &lt;/ul&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/dd637749.aspx"&gt;http://msdn.microsoft.com/en-us/library/dd637749.aspx&lt;/a&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;ul&gt;   &lt;li&gt;EWS Managed API 1.0 Beta SDK April 2009 &lt;/li&gt; &lt;/ul&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/dd633710.aspx"&gt;http://msdn.microsoft.com/en-us/library/dd633710.aspx&lt;/a&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;ul&gt;   &lt;li&gt;Exchange Server Developer Center &lt;/li&gt; &lt;/ul&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;a href="http://msdn.microsoft.com/en-us/exchange/default.aspx"&gt;http://msdn.microsoft.com/en-us/exchange/default.aspx&lt;/a&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Please do let me know if that information is helpful to you.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9792769" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/vikas/archive/tags/Exchange/">Exchange</category><category domain="http://blogs.msdn.com/b/vikas/archive/tags/Exchange+2007/">Exchange 2007</category><category domain="http://blogs.msdn.com/b/vikas/archive/tags/Search+Folder/">Search Folder</category><category domain="http://blogs.msdn.com/b/vikas/archive/tags/Exchange+Web+Services/">Exchange Web Services</category><category domain="http://blogs.msdn.com/b/vikas/archive/tags/Samples/">Samples</category><category domain="http://blogs.msdn.com/b/vikas/archive/tags/DevMsgTeam/">DevMsgTeam</category><category domain="http://blogs.msdn.com/b/vikas/archive/tags/Push+Notification/">Push Notification</category><category domain="http://blogs.msdn.com/b/vikas/archive/tags/Pull+Notification/">Pull Notification</category><category domain="http://blogs.msdn.com/b/vikas/archive/tags/GetItem/">GetItem</category><category domain="http://blogs.msdn.com/b/vikas/archive/tags/ExchangeServiceBinding/">ExchangeServiceBinding</category><category domain="http://blogs.msdn.com/b/vikas/archive/tags/GetAttachment/">GetAttachment</category><category domain="http://blogs.msdn.com/b/vikas/archive/tags/HasAttachment/">HasAttachment</category><category domain="http://blogs.msdn.com/b/vikas/archive/tags/UpdateItem/">UpdateItem</category><category domain="http://blogs.msdn.com/b/vikas/archive/tags/SetUserOofSettingsRequest/">SetUserOofSettingsRequest</category><category domain="http://blogs.msdn.com/b/vikas/archive/tags/ExchangeImpersonation/">ExchangeImpersonation</category><category domain="http://blogs.msdn.com/b/vikas/archive/tags/FindFolder/">FindFolder</category><category domain="http://blogs.msdn.com/b/vikas/archive/tags/CoolStuff/">CoolStuff</category><category domain="http://blogs.msdn.com/b/vikas/archive/tags/Announcements/">Announcements</category><category domain="http://blogs.msdn.com/b/vikas/archive/tags/SearchFolderType/">SearchFolderType</category><category domain="http://blogs.msdn.com/b/vikas/archive/tags/EWS+Managed+API/">EWS Managed API</category><category domain="http://blogs.msdn.com/b/vikas/archive/tags/FindItem/">FindItem</category></item><item><title>HOWTO: Automatically Login to OWA 2007 using HTML + JavaScript</title><link>http://blogs.msdn.com/b/vikas/archive/2009/06/03/howto-automatically-login-to-owa-2007-using-html-javascript.aspx</link><pubDate>Wed, 03 Jun 2009 03:09:11 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9688040</guid><dc:creator>Vikas - MSFT</dc:creator><slash:comments>9</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/vikas/rsscomments.aspx?WeblogPostID=9688040</wfw:commentRss><comments>http://blogs.msdn.com/b/vikas/archive/2009/06/03/howto-automatically-login-to-owa-2007-using-html-javascript.aspx#comments</comments><description>&lt;p&gt;First thing first, you should understand that this is NOT SUPPORTED &amp;amp; NOT RECOMMENDED solution by Microsoft.&lt;/p&gt;  &lt;p&gt;This is just a proof of concept that OWA 2007 can be auto login, if you know the username &amp;amp; password of target account.&lt;/p&gt;  &lt;p&gt;The approach is simple and took me little reverse engineering or OWA’s login page. Owa login page being HTML does a form submit and post the username/password along with few hidden variables and upon receiving those parameters owaauth.dll generate a cookie, assign it to the session and redirect you to your mailbox. How easy, you may say.. but how you can submit those parameters programmatically. &lt;/p&gt;  &lt;p&gt;This is how its done…&lt;/p&gt;  &lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;script&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="kwrd"&gt;function&lt;/span&gt; LoginToOWA (server,domain,username,password) {
  
  
  &lt;span class="kwrd"&gt;var&lt;/span&gt; url = &lt;span class="str"&gt;&amp;quot;https://&amp;quot;&lt;/span&gt; + server + &lt;span class="str"&gt;&amp;quot;/exchweb/bin/auth/owaauth.dll&amp;quot;&lt;/span&gt;;
  &lt;span class="kwrd"&gt;var&lt;/span&gt; p = {destination:&lt;span class="str"&gt;'https://'&lt;/span&gt; + server + &lt;span class="str"&gt;'/exchange'&lt;/span&gt;,flags:&lt;span class="str"&gt;'0'&lt;/span&gt;,forcedownlevel:&lt;span class="str"&gt;'0'&lt;/span&gt;,trusted:&lt;span class="str"&gt;'0'&lt;/span&gt;,isutf8:&lt;span class="str"&gt;'1'&lt;/span&gt;,username:domain + '\\' + username,password:password};
  
  
  &lt;span class="kwrd"&gt;var&lt;/span&gt; myForm = document.createElement(&lt;span class="str"&gt;&amp;quot;form&amp;quot;&lt;/span&gt;);
  myForm.method=&lt;span class="str"&gt;&amp;quot;post&amp;quot;&lt;/span&gt; ;
  myForm.action = url ;

  &lt;span class="kwrd"&gt;for&lt;/span&gt; (&lt;span class="kwrd"&gt;var&lt;/span&gt; k &lt;span class="kwrd"&gt;in&lt;/span&gt; p) {
  
    &lt;span class="kwrd"&gt;var&lt;/span&gt; myInput = document.createElement(&lt;span class="str"&gt;&amp;quot;input&amp;quot;&lt;/span&gt;) ;
    myInput.setAttribute(&lt;span class="str"&gt;&amp;quot;name&amp;quot;&lt;/span&gt;, k) ;
    myInput.setAttribute(&lt;span class="str"&gt;&amp;quot;value&amp;quot;&lt;/span&gt;, p[k]);
    myForm.appendChild(myInput) ;
  }
    
  
  document.body.appendChild(myForm) ;
  myForm.submit() ;
  document.body.removeChild(myForm) ;
}
&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;script&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;

&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;body&lt;/span&gt; &lt;span class="attr"&gt;onload&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;javascript:LoginToOWA('owa.exchange.com','domain','username','password');&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;h3&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;Please wait while redirecting to OWA...&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;h3&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;Body&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;&lt;/span&gt;&lt;/pre&gt;

&lt;pre class="csharpcode"&gt;&lt;em&gt;Happy Coding!!!&lt;/em&gt;&lt;/pre&gt;

&lt;pre class="csharpcode"&gt;&amp;#160;&lt;/pre&gt;
&lt;style type="text/css"&gt;

.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;&lt;span class="sbmLink"&gt;
  &lt;table cellspacing="1" cellpadding="1"&gt;&lt;tbody&gt;
      &lt;tr&gt;
        &lt;td class="sbmText"&gt;Share this post : &lt;/td&gt;

        &lt;td&gt;&lt;a title="Post it to Social!" href="http://social.microsoft.com/en-us/action/create/s/E/?url=http://blogs.msdn.com/vikas/archive/2009/06/03/howto-automatically-login-to-owa-2007-using-html-javascript.aspx&amp;amp;ttl=HOWTO: Automatically Login to OWA 2007 using HTML + JavaScript" target="_blank"&gt;&lt;img border="0" src="http://www.dotnetscraps.com/dotnetscraps/samples/sbmtool/social.png" /&gt;&lt;/a&gt;&lt;/td&gt;

        &lt;td&gt;&lt;a title="Post it to MSDN!" href="http://social.msdn.microsoft.com/en-us/action/create/s/E/?url=http://blogs.msdn.com/vikas/archive/2009/06/03/howto-automatically-login-to-owa-2007-using-html-javascript.aspx&amp;amp;ttl=HOWTO: Automatically Login to OWA 2007 using HTML + JavaScript" target="_blank"&gt;&lt;img border="0" src="http://www.dotnetscraps.com/dotnetscraps/samples/sbmtool/msdn.png" /&gt;&lt;/a&gt;&lt;/td&gt;

        &lt;td&gt;&lt;a title="Post it to Technet!" href="http://social.technet.microsoft.com/en-us/action/create/s/E/?url=http://blogs.msdn.com/vikas/archive/2009/06/03/howto-automatically-login-to-owa-2007-using-html-javascript.aspx&amp;amp;ttl=HOWTO: Automatically Login to OWA 2007 using HTML + JavaScript" target="_blank"&gt;&lt;img border="0" src="http://www.dotnetscraps.com/dotnetscraps/samples/sbmtool/technet.png" /&gt;&lt;/a&gt;&lt;/td&gt;

        &lt;td&gt;&lt;a title="Post it to Expression!" href="http://social.expression.microsoft.com/en-us/action/create/s/E/?url=http://blogs.msdn.com/vikas/archive/2009/06/03/howto-automatically-login-to-owa-2007-using-html-javascript.aspx&amp;amp;ttl=HOWTO: Automatically Login to OWA 2007 using HTML + JavaScript" target="_blank"&gt;&lt;img border="0" src="http://www.dotnetscraps.com/dotnetscraps/samples/sbmtool/expression.png" /&gt;&lt;/a&gt;&lt;/td&gt;

        &lt;td&gt;&lt;a title="Post it to backflip" href="http://www.backflip.com/add_page_pop.ihtml?url=http://blogs.msdn.com/vikas/archive/2009/06/03/howto-automatically-login-to-owa-2007-using-html-javascript.aspx&amp;amp;title=HOWTO: Automatically Login to OWA 2007 using HTML + JavaScript" target="_blank"&gt;&lt;img border="0" src="http://blogs.msdn.com/blogfiles/rahulso/WindowsLiveWriter/IconsfordifferentSocialBookmarkingSites_B387/backflip4.png" /&gt;&lt;/a&gt;&lt;/td&gt;

        &lt;td&gt;&lt;a title="Post it to blinkbits!" href="http://www.blinkbits.com/bookmarklets/save.php?v=1&amp;amp;source_url=http://blogs.msdn.com/vikas/archive/2009/06/03/howto-automatically-login-to-owa-2007-using-html-javascript.aspx&amp;amp;title=HOWTO: Automatically Login to OWA 2007 using HTML + JavaScript" target="_blank"&gt;&lt;img border="0" src="http://blogs.msdn.com/blogfiles/rahulso/WindowsLiveWriter/IconsfordifferentSocialBookmarkingSites_B387/blinkbit4.png" /&gt;&lt;/a&gt;&lt;/td&gt;

        &lt;td&gt;&lt;a title="Post it to blogmemes" href="http://www.blogmemes.net/post.php?url=http://blogs.msdn.com/vikas/archive/2009/06/03/howto-automatically-login-to-owa-2007-using-html-javascript.aspx&amp;amp;title=HOWTO: Automatically Login to OWA 2007 using HTML + JavaScript" target="_blank"&gt;&lt;img border="0" src="http://blogs.msdn.com/blogfiles/rahulso/WindowsLiveWriter/IconsfordifferentSocialBookmarkingSites_B387/blogmemes4.png" /&gt;&lt;/a&gt;&lt;/td&gt;

        &lt;td&gt;&lt;a title="Post it to buddymark" href="http://buddymarks.com/s_add_bookmark.php?bookmark_url=http://blogs.msdn.com/vikas/archive/2009/06/03/howto-automatically-login-to-owa-2007-using-html-javascript.aspx&amp;amp;bookmark_title=HOWTO: Automatically Login to OWA 2007 using HTML + JavaScript" target="_blank"&gt;&lt;img border="0" src="http://blogs.msdn.com/blogfiles/rahulso/WindowsLiveWriter/IconsfordifferentSocialBookmarkingSites_B387/buddymar4.png" /&gt;&lt;/a&gt;&lt;/td&gt;

        &lt;td&gt;&lt;a title="Post it to complore" href="http://complore.com?q=node/add/flexinode-5&amp;amp;url=http://blogs.msdn.com/vikas/archive/2009/06/03/howto-automatically-login-to-owa-2007-using-html-javascript.aspx&amp;amp;title=HOWTO: Automatically Login to OWA 2007 using HTML + JavaScript" target="_blank"&gt;&lt;img border="0" src="http://blogs.msdn.com/blogfiles/rahulso/WindowsLiveWriter/IconsfordifferentSocialBookmarkingSites_B387/complore4.png" /&gt;&lt;/a&gt;&lt;/td&gt;

        &lt;td&gt;&lt;a title="Post it to del.icio.us" href="http://del.icio.us/post?url=http://blogs.msdn.com/vikas/archive/2009/06/03/howto-automatically-login-to-owa-2007-using-html-javascript.aspx&amp;amp;;title=HOWTO: Automatically Login to OWA 2007 using HTML + JavaScript" target="_blank"&gt;&lt;img border="0" src="http://blogs.msdn.com/blogfiles/rahulso/WindowsLiveWriter/IconsfordifferentSocialBookmarkingSites_B387/deliciou4.png" /&gt;&lt;/a&gt;&lt;/td&gt;

        &lt;td&gt;&lt;a title="Post it to del.iri.ous!" href="http://de.lirio.us/bookmarks/sbmtool?action=add&amp;amp;address=http://blogs.msdn.com/vikas/archive/2009/06/03/howto-automatically-login-to-owa-2007-using-html-javascript.aspx&amp;amp;title=HOWTO: Automatically Login to OWA 2007 using HTML + JavaScript" target="_blank"&gt;&lt;img border="0" src="http://blogs.msdn.com/blogfiles/rahulso/WindowsLiveWriter/IconsfordifferentSocialBookmarkingSites_B387/deliriou4.png" /&gt;&lt;/a&gt;&lt;/td&gt;

        &lt;td&gt;&lt;a title="Post it to digg" href="http://digg.com/submit?phase=2&amp;amp;url=http://blogs.msdn.com/vikas/archive/2009/06/03/howto-automatically-login-to-owa-2007-using-html-javascript.aspx&amp;amp;title=HOWTO: Automatically Login to OWA 2007 using HTML + JavaScript" target="_blank"&gt;&lt;img border="0" src="http://blogs.msdn.com/blogfiles/rahulso/WindowsLiveWriter/IconsfordifferentSocialBookmarkingSites_B387/digg14.png" /&gt;&lt;/a&gt;&lt;/td&gt;

        &lt;td&gt;&lt;a title="Post it to dotnetkicks" href="http://www.dotnetkicks.com/kick/?url=http://blogs.msdn.com/vikas/archive/2009/06/03/howto-automatically-login-to-owa-2007-using-html-javascript.aspx&amp;amp;title=HOWTO: Automatically Login to OWA 2007 using HTML + JavaScript" target="_blank"&gt;&lt;img border="0" src="http://blogs.msdn.com/blogfiles/rahulso/WindowsLiveWriter/IconsfordifferentSocialBookmarkingSites_B387/CropperCapture154.jpg" /&gt;&lt;/a&gt;&lt;/td&gt;

        &lt;td&gt;&lt;a title="Post it to Facebook" href="http://www.facebook.com/sharer.php?u=http://blogs.msdn.com/vikas/archive/2009/06/03/howto-automatically-login-to-owa-2007-using-html-javascript.aspx&amp;amp;t=HOWTO: Automatically Login to OWA 2007 using HTML + JavaScript" target="_blank"&gt;&lt;img border="0" src="http://blogs.technet.com/photos/james/images/1765319/original.aspx" /&gt;&lt;/a&gt;&lt;/td&gt;

        &lt;td&gt;&lt;a title="Post it to furl" href="http://www.furl.net/store?s=f&amp;amp;to=0&amp;amp;u=http://blogs.msdn.com/vikas/archive/2009/06/03/howto-automatically-login-to-owa-2007-using-html-javascript.aspx&amp;amp;ti=HOWTO: Automatically Login to OWA 2007 using HTML + JavaScript" target="_blank"&gt;&lt;img border="0" src="http://blogs.msdn.com/blogfiles/rahulso/WindowsLiveWriter/IconsfordifferentSocialBookmarkingSites_B387/furl4.png" /&gt;&lt;/a&gt;&lt;/td&gt;

        &lt;td&gt;&lt;a title="Post it to live" href="https://favorites.live.com/quickadd.aspx?marklet=1&amp;amp;mkt=en-us&amp;amp;url=http://blogs.msdn.com/vikas/archive/2009/06/03/howto-automatically-login-to-owa-2007-using-html-javascript.aspx&amp;amp;title=HOWTO: Automatically Login to OWA 2007 using HTML + JavaScript" target="_blank"&gt;&lt;img border="0" src="http://blogs.msdn.com/blogfiles/rahulso/WindowsLiveWriter/IconsfordifferentSocialBookmarkingSites_B387/live4.png" /&gt;&lt;/a&gt;&lt;/td&gt;

        &lt;td&gt;&lt;a title="Post it to magnolia!" href="http://ma.gnolia.com/bookmarklet/add?url=http://blogs.msdn.com/vikas/archive/2009/06/03/howto-automatically-login-to-owa-2007-using-html-javascript.aspx&amp;amp;title=HOWTO: Automatically Login to OWA 2007 using HTML + JavaScript" target="_blank"&gt;&lt;img border="0" src="http://blogs.msdn.com/blogfiles/rahulso/WindowsLiveWriter/IconsfordifferentSocialBookmarkingSites_B387/magnolia4.png" /&gt;&lt;/a&gt;&lt;/td&gt;

        &lt;td&gt;&lt;a title="Post it to netvouz!" href="http://netvouz.com/action/submitBookmark?url=http://blogs.msdn.com/vikas/archive/2009/06/03/howto-automatically-login-to-owa-2007-using-html-javascript.aspx&amp;amp;title=HOWTO: Automatically Login to OWA 2007 using HTML + JavaScript" target="_blank"&gt;&lt;img border="0" src="http://blogs.msdn.com/blogfiles/rahulso/WindowsLiveWriter/IconsfordifferentSocialBookmarkingSites_B387/netvouz4.png" /&gt;&lt;/a&gt;&lt;/td&gt;

        &lt;td&gt;&lt;a title="Post it to reddit!" href="http://reddit.com/submit?url=http://blogs.msdn.com/vikas/archive/2009/06/03/howto-automatically-login-to-owa-2007-using-html-javascript.aspx&amp;amp;title=HOWTO: Automatically Login to OWA 2007 using HTML + JavaScript" target="_blank"&gt;&lt;img border="0" src="http://blogs.msdn.com/blogfiles/rahulso/WindowsLiveWriter/IconsfordifferentSocialBookmarkingSites_B387/reddit4.png" /&gt;&lt;/a&gt;&lt;/td&gt;

        &lt;td&gt;&lt;a title="Post it to shadow" href="http://www.shadows.com/bookmark/saveLink.rails?page=http://blogs.msdn.com/vikas/archive/2009/06/03/howto-automatically-login-to-owa-2007-using-html-javascript.aspx&amp;amp;title=HOWTO: Automatically Login to OWA 2007 using HTML + JavaScript" target="_blank"&gt;&lt;img border="0" src="http://blogs.msdn.com/blogfiles/rahulso/WindowsLiveWriter/IconsfordifferentSocialBookmarkingSites_B387/shadows6.png" /&gt;&lt;/a&gt;&lt;/td&gt;

        &lt;td&gt;&lt;a title="Post it to spurl" href="http://www.spurl.net/spurl.php?v=3&amp;amp;url=http://blogs.msdn.com/vikas/archive/2009/06/03/howto-automatically-login-to-owa-2007-using-html-javascript.aspx&amp;amp;title=HOWTO: Automatically Login to OWA 2007 using HTML + JavaScript" target="_blank"&gt;&lt;img border="0" src="http://blogs.msdn.com/blogfiles/rahulso/WindowsLiveWriter/IconsfordifferentSocialBookmarkingSites_B387/spurl8.png" /&gt;&lt;/a&gt;&lt;/td&gt;

        &lt;td&gt;&lt;a title="Post it to technorati!" href="http://technorati.com/faves/?add=http://blogs.msdn.com/vikas/archive/2009/06/03/howto-automatically-login-to-owa-2007-using-html-javascript.aspx&amp;amp;title=HOWTO: Automatically Login to OWA 2007 using HTML + JavaScript" target="_blank"&gt;&lt;img border="0" src="http://blogs.msdn.com/blogfiles/rahulso/WindowsLiveWriter/IconsfordifferentSocialBookmarkingSites_B387/technora4.png" /&gt;&lt;/a&gt;&lt;/td&gt;

        &lt;td&gt;&lt;a title="Post it to wists" href="http://www.wists.com/?action=add&amp;amp;url=http://blogs.msdn.com/vikas/archive/2009/06/03/howto-automatically-login-to-owa-2007-using-html-javascript.aspx&amp;amp;title=HOWTO: Automatically Login to OWA 2007 using HTML + JavaScript" target="_blank"&gt;&lt;img border="0" src="http://blogs.msdn.com/blogfiles/rahulso/WindowsLiveWriter/IconsfordifferentSocialBookmarkingSites_B387/wists9.png" /&gt;&lt;/a&gt;&lt;/td&gt;

        &lt;td&gt;&lt;a title="Post it to yahoo!" href="http://myweb.yahoo.com/myresults/bookmarklet?u=http://blogs.msdn.com/vikas/archive/2009/06/03/howto-automatically-login-to-owa-2007-using-html-javascript.aspx&amp;amp;t=HOWTO: Automatically Login to OWA 2007 using HTML + JavaScript" target="_blank"&gt;&lt;img border="0" src="http://blogs.msdn.com/blogfiles/rahulso/WindowsLiveWriter/IconsfordifferentSocialBookmarkingSites_B387/yahoo9.png" /&gt;&lt;/a&gt;&lt;/td&gt;
      &lt;/tr&gt;
    &lt;/tbody&gt;&lt;/table&gt;
&lt;/span&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9688040" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/vikas/archive/tags/Exchange/">Exchange</category><category domain="http://blogs.msdn.com/b/vikas/archive/tags/Exchange+2007/">Exchange 2007</category><category domain="http://blogs.msdn.com/b/vikas/archive/tags/HOWTO/">HOWTO</category><category domain="http://blogs.msdn.com/b/vikas/archive/tags/Samples/">Samples</category><category domain="http://blogs.msdn.com/b/vikas/archive/tags/Workarounds/">Workarounds</category><category domain="http://blogs.msdn.com/b/vikas/archive/tags/DevMsgTeam/">DevMsgTeam</category><category domain="http://blogs.msdn.com/b/vikas/archive/tags/Tip+Of+The+Day/">Tip Of The Day</category><category domain="http://blogs.msdn.com/b/vikas/archive/tags/CoolStuff/">CoolStuff</category></item><item><title>HOWTO: EWS: Get OOF State for Self or any user in your organization</title><link>http://blogs.msdn.com/b/vikas/archive/2009/05/29/howto-ews-get-oof-state-for-self-or-any-user-in-your-organization.aspx</link><pubDate>Fri, 29 May 2009 19:00:28 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9653505</guid><dc:creator>Vikas - MSFT</dc:creator><slash:comments>3</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/vikas/rsscomments.aspx?WeblogPostID=9653505</wfw:commentRss><comments>http://blogs.msdn.com/b/vikas/archive/2009/05/29/howto-ews-get-oof-state-for-self-or-any-user-in-your-organization.aspx#comments</comments><description>&lt;p&gt;First thing first, this is just for demonstration purpose and might *not* be a supported solution by Microsoft. The setting we are reading from are hidden messages and not documented anywhere. I had to reverse engineer it for demonstration purpose. &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Objective&lt;/strong&gt;: To get OOF State of any user in your organization.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Challenges: &lt;/strong&gt;You might ask me why not use &lt;strong&gt;&lt;em&gt;GetUserOofSettings&lt;/em&gt;&lt;/strong&gt; to query user’s OOF status with the help of Exchange Impersonation? This is due to the limitation of EWS’s &lt;strong&gt;&lt;em&gt;GetUserOofSettings/SetUserOofSettings &lt;/em&gt;&lt;/strong&gt;methods as they don’t support Impersonation.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Workaround: &lt;/strong&gt;Directly reading the hidden messages from Mailbox Root where this Flag &amp;amp; OOF message is stored. Since we are &lt;em&gt;read-only &lt;/em&gt;we should be good to do so, that’s my assumption.&lt;/p&gt;  &lt;p&gt;We need to first make a FindItem call to the mailbox root and search for a message with ItemClass = “IPM.Microsoft.OOF.UserOOFSettings”. Assuming that there will be only one message with that message class at any given time, we get its ItemId and make a GetItem call to read the message body. The message body is plain text XML with following structure&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;For OOF enabled…&lt;/p&gt;  &lt;p&gt;&amp;lt;UserOofSettings&amp;gt;    &lt;br /&gt;&amp;lt;OofState &amp;gt;&lt;strong&gt;&lt;em&gt;Enabled&lt;/em&gt;&lt;/strong&gt;&amp;lt;/OofState&amp;gt;     &lt;br /&gt;&amp;lt;/UserOofSettings&amp;gt;&lt;/p&gt;  &lt;p&gt;For OOF disabled…&lt;/p&gt;  &lt;p&gt;&amp;lt;UserOofSettings&amp;gt;    &lt;br /&gt;&amp;lt;OofState &amp;gt;&lt;strong&gt;&lt;em&gt;Disabled&lt;/em&gt;&lt;/strong&gt;&amp;lt;/OofState&amp;gt;     &lt;br /&gt;&amp;lt;/UserOofSettings&amp;gt; &lt;/p&gt;  &lt;p&gt;There is also a state called SCHEDULED, please refer to the below mentioned article to know more about it&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Reference: &lt;/strong&gt;&lt;a title="http://msdn.microsoft.com/en-us/library/aa580465.aspx" href="http://msdn.microsoft.com/en-us/library/aa580465.aspx"&gt;&lt;strong&gt;http://msdn.microsoft.com/en-us/library/aa580465.aspx&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;This code sample can do the job for you.&lt;/p&gt;  &lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System;
&lt;span class="kwrd"&gt;using&lt;/span&gt; GetOOFState.MyEWS;

&lt;span class="kwrd"&gt;namespace&lt;/span&gt; GetOOFState
{
    &lt;span class="kwrd"&gt;class&lt;/span&gt; Program
    {
        &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; Main(&lt;span class="kwrd"&gt;string&lt;/span&gt;[] args)
        {

            
            ExchangeServiceBinding esb = &lt;span class="kwrd"&gt;new&lt;/span&gt; ExchangeServiceBinding();
            esb.Url = &lt;span class="str"&gt;&amp;quot;https://server/ews/exchange.asmx&amp;quot;&lt;/span&gt;;
            esb.Credentials = &lt;span class="kwrd"&gt;new&lt;/span&gt; System.Net.NetworkCredential(&lt;span class="str"&gt;&amp;quot;ServiceAccount&amp;quot;&lt;/span&gt;, Password&lt;span class="str"&gt;&amp;quot;, &amp;quot;&lt;/span&gt;Domain&lt;span class="str"&gt;&amp;quot;);

            esb.ExchangeImpersonation = new ExchangeImpersonationType();
            esb.ExchangeImpersonation.ConnectingSID = new ConnectingSIDType();
            esb.ExchangeImpersonation.ConnectingSID.PrimarySmtpAddress = &amp;quot;&lt;/span&gt;username@domain.com&lt;span class="str"&gt;&amp;quot;;
            

            FindItemType fit = new FindItemType();
            fit.ItemShape = new ItemResponseShapeType();
            fit.ItemShape.BaseShape = DefaultShapeNamesType.AllProperties;
            fit.Restriction = new RestrictionType();

            IsEqualToType itemMessageClass = new IsEqualToType();
            
            PathToUnindexedFieldType msgClassProp = new PathToUnindexedFieldType();
            msgClassProp.FieldURI = UnindexedFieldURIType.itemItemClass;

            ConstantValueType msgClassValue = new ConstantValueType();
            msgClassValue.Value = &amp;quot;&lt;/span&gt;IPM.Microsoft.OOF.UserOOFSettings&lt;span class="str"&gt;&amp;quot;;

            itemMessageClass.Item = msgClassProp;
            itemMessageClass.FieldURIOrConstant = new FieldURIOrConstantType();
            itemMessageClass.FieldURIOrConstant.Item = msgClassValue;
            
            
            fit.Restriction = new RestrictionType();
            fit.Restriction.Item = itemMessageClass;

            DistinguishedFolderIdType rootFolder = new DistinguishedFolderIdType();
            rootFolder.Id = DistinguishedFolderIdNameType.root;

            fit.ParentFolderIds = new BaseFolderIdType[] { rootFolder };

            FindItemResponseType firt = esb.FindItem(fit);
            string itemID = ((ArrayOfRealItemsType)((FindItemResponseMessageType)firt.ResponseMessages.Items[0]).RootFolder.Item).Items[0].ItemId.Id;

            GetItemType git = new GetItemType();
            ItemIdType iit = new ItemIdType();
            iit.Id = itemID;

            git.ItemIds = new BaseItemIdType[] { iit };

            git.ItemShape = new ItemResponseShapeType();
            git.ItemShape.BaseShape = DefaultShapeNamesType.IdOnly;

            PathToUnindexedFieldType []propsToFetch = new PathToUnindexedFieldType[1];
            propsToFetch[0] = new PathToUnindexedFieldType();
            propsToFetch[0].FieldURI = UnindexedFieldURIType.itemBody;

            git.ItemShape.AdditionalProperties = propsToFetch;
            
   

            GetItemResponseType girt = esb.GetItem(git);
            ItemType itemOOF = ((ItemType)(((ItemInfoResponseMessageType)girt.ResponseMessages.Items[0]).Items.Items[0]));

            System.Xml.XmlDocument xDoc = new System.Xml.XmlDocument();
            xDoc.LoadXml(itemOOF.Body.Value);
            Console.WriteLine(&amp;quot;&lt;/span&gt;OOF State: {0}&lt;span class="str"&gt;&amp;quot;, xDoc.GetElementsByTagName(&amp;quot;&lt;/span&gt;OofState&amp;quot;)[0].InnerText);
            

            

        }
    }
}&lt;/pre&gt;
&lt;style type="text/css"&gt;

.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;

&lt;p&gt;&lt;em&gt;Happy Coding!!!&lt;/em&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9653505" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/vikas/archive/tags/Messaging/">Messaging</category><category domain="http://blogs.msdn.com/b/vikas/archive/tags/Exchange+2007/">Exchange 2007</category><category domain="http://blogs.msdn.com/b/vikas/archive/tags/HOWTO/">HOWTO</category><category domain="http://blogs.msdn.com/b/vikas/archive/tags/Exchange+Web+Services/">Exchange Web Services</category><category domain="http://blogs.msdn.com/b/vikas/archive/tags/Samples/">Samples</category><category domain="http://blogs.msdn.com/b/vikas/archive/tags/Workarounds/">Workarounds</category><category domain="http://blogs.msdn.com/b/vikas/archive/tags/DevMsgTeam/">DevMsgTeam</category><category domain="http://blogs.msdn.com/b/vikas/archive/tags/GetItem/">GetItem</category><category domain="http://blogs.msdn.com/b/vikas/archive/tags/ExchangeServiceBinding/">ExchangeServiceBinding</category><category domain="http://blogs.msdn.com/b/vikas/archive/tags/SetUserOofSettingsRequest/">SetUserOofSettingsRequest</category><category domain="http://blogs.msdn.com/b/vikas/archive/tags/ExchangeImpersonation/">ExchangeImpersonation</category><category domain="http://blogs.msdn.com/b/vikas/archive/tags/CoolStuff/">CoolStuff</category><category domain="http://blogs.msdn.com/b/vikas/archive/tags/Restrictions/">Restrictions</category><category domain="http://blogs.msdn.com/b/vikas/archive/tags/FindItem/">FindItem</category></item></channel></rss>