<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/atom.xsl" media="screen"?><feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-US"><title type="html">Jive into Messaging world</title><subtitle type="html">Everyday is a Challenge, I am loving it...
</subtitle><id>http://blogs.msdn.com/vikas/atom.xml</id><link rel="alternate" type="text/html" href="http://blogs.msdn.com/vikas/default.aspx" /><link rel="self" type="application/atom+xml" href="http://blogs.msdn.com/vikas/atom.xml" /><generator uri="http://communityserver.org" version="2.1.61025.2">Community Server</generator><updated>2009-03-17T15:02:06Z</updated><entry><title>BUG: Outlook 2003: Custom Forms: You cannot use Custom Actions to Reply/Forward Appointment Items</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/vikas/archive/2009/11/19/bug-outlook-2003-custom-forms-you-cannot-use-custom-actions-to-reply-forward-appointment-items.aspx" /><id>http://blogs.msdn.com/vikas/archive/2009/11/19/bug-outlook-2003-custom-forms-you-cannot-use-custom-actions-to-reply-forward-appointment-items.aspx</id><published>2009-11-19T22:48:31Z</published><updated>2009-11-19T22:48:31Z</updated><content type="html">&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"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.vikasverma.com/blogimages/BUGOutlook2003CustomFormsYoucannotuseCus_3C5A/image_thumb.png" width="782" height="542" /&gt;&lt;/a&gt; &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"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.vikasverma.com/blogimages/BUGOutlook2003CustomFormsYoucannotuseCus_3C5A/image_thumb_3.png" width="201" height="245" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&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: &amp;quot;Could not complete the operation. One or more parameter values are not valid&amp;quot;&lt;/i&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.vikasverma.com/blogimages/BUGOutlook2003CustomFormsYoucannotuseCus_3C5A/image_4.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.vikasverma.com/blogimages/BUGOutlook2003CustomFormsYoucannotuseCus_3C5A/image_thumb_4.png" width="475" height="123" /&gt;&lt;/a&gt; &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"&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;</content><author><name>Vikas Verma</name><uri>http://blogs.msdn.com/members/Vikas+Verma.aspx</uri></author></entry><entry><title>BUG: Outlook: Word: A signature to death!</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/vikas/archive/2009/10/09/bug-outlook-word-a-signature-to-death.aspx" /><id>http://blogs.msdn.com/vikas/archive/2009/10/09/bug-outlook-word-a-signature-to-death.aspx</id><published>2009-10-10T00:16:27Z</published><updated>2009-10-10T00:16:27Z</updated><content type="html">&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;=&amp;quot;http://www.server.com/logo.jpg&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;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"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://www.vikasverma.com/blogimages/BUGOutlookWordAsignaturetodeath_261E/image_thumb.png" width="469" height="150" /&gt;&lt;/a&gt; &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"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://www.vikasverma.com/blogimages/BUGOutlookWordAsignaturetodeath_261E/image_thumb_3.png" width="538" height="175" /&gt;&lt;/a&gt; &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;</content><author><name>Vikas Verma</name><uri>http://blogs.msdn.com/members/Vikas+Verma.aspx</uri></author><category term="Outlook" scheme="http://blogs.msdn.com/vikas/archive/tags/Outlook/default.aspx" /><category term="OOM" scheme="http://blogs.msdn.com/vikas/archive/tags/OOM/default.aspx" /><category term="Workarounds" scheme="http://blogs.msdn.com/vikas/archive/tags/Workarounds/default.aspx" /><category term="BUG" scheme="http://blogs.msdn.com/vikas/archive/tags/BUG/default.aspx" /><category term="DevMsgTeam" scheme="http://blogs.msdn.com/vikas/archive/tags/DevMsgTeam/default.aspx" /><category term="Announcements" scheme="http://blogs.msdn.com/vikas/archive/tags/Announcements/default.aspx" /></entry><entry><title>Hey!!! Do not forget to “Include” me… Ok?</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/vikas/archive/2009/10/02/hey-do-not-forget-to-include-me-ok.aspx" /><id>http://blogs.msdn.com/vikas/archive/2009/10/02/hey-do-not-forget-to-include-me-ok.aspx</id><published>2009-10-03T01:25:31Z</published><updated>2009-10-03T01:25:31Z</updated><content type="html">&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"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.vikasverma.com/blogimages/HeyDonotforgettoIncludemeOk_371F/image_thumb.png" width="244" height="94" /&gt;&lt;/a&gt; &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 &amp;quot;simple&amp;quot; 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;</content><author><name>Vikas Verma</name><uri>http://blogs.msdn.com/members/Vikas+Verma.aspx</uri></author><category term="Outlook" scheme="http://blogs.msdn.com/vikas/archive/tags/Outlook/default.aspx" /><category term="Workarounds" scheme="http://blogs.msdn.com/vikas/archive/tags/Workarounds/default.aspx" /><category term="BUG" scheme="http://blogs.msdn.com/vikas/archive/tags/BUG/default.aspx" /><category term="DevMsgTeam" scheme="http://blogs.msdn.com/vikas/archive/tags/DevMsgTeam/default.aspx" /><category term="Custom Forms" scheme="http://blogs.msdn.com/vikas/archive/tags/Custom+Forms/default.aspx" /></entry><entry><title>3 years of same, yet different work and then a responsibility upgrade, a good one.</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/vikas/archive/2009/10/02/3-years-of-same-yet-different-work-and-then-a-responsibility-upgrade-a-good-one.aspx" /><id>http://blogs.msdn.com/vikas/archive/2009/10/02/3-years-of-same-yet-different-work-and-then-a-responsibility-upgrade-a-good-one.aspx</id><published>2009-10-03T01:01:12Z</published><updated>2009-10-03T01:01:12Z</updated><content type="html">&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;</content><author><name>Vikas Verma</name><uri>http://blogs.msdn.com/members/Vikas+Verma.aspx</uri></author><category term="DevMsgTeam" scheme="http://blogs.msdn.com/vikas/archive/tags/DevMsgTeam/default.aspx" /><category term="Personal" scheme="http://blogs.msdn.com/vikas/archive/tags/Personal/default.aspx" /></entry><entry><title>Using CDOSYS from .Net?! Be Careful with Attachments!</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/vikas/archive/2009/09/18/using-cdosys-from-net-be-careful-with-attachments.aspx" /><id>http://blogs.msdn.com/vikas/archive/2009/09/18/using-cdosys-from-net-be-careful-with-attachments.aspx</id><published>2009-09-18T23:53:16Z</published><updated>2009-09-18T23:53:16Z</updated><content type="html">&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;</content><author><name>Vikas Verma</name><uri>http://blogs.msdn.com/members/Vikas+Verma.aspx</uri></author></entry><entry><title>Exchange Web Services 101 : Let’s get started!</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/vikas/archive/2009/06/20/exchange-web-services-101-let-s-get-started.aspx" /><id>http://blogs.msdn.com/vikas/archive/2009/06/20/exchange-web-services-101-let-s-get-started.aspx</id><published>2009-06-20T06:30:26Z</published><updated>2009-06-20T06:30:26Z</updated><content type="html">&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;</content><author><name>Vikas Verma</name><uri>http://blogs.msdn.com/members/Vikas+Verma.aspx</uri></author><category term="Exchange" scheme="http://blogs.msdn.com/vikas/archive/tags/Exchange/default.aspx" /><category term="Exchange 2007" scheme="http://blogs.msdn.com/vikas/archive/tags/Exchange+2007/default.aspx" /><category term="Search Folder" scheme="http://blogs.msdn.com/vikas/archive/tags/Search+Folder/default.aspx" /><category term="Exchange Web Services" scheme="http://blogs.msdn.com/vikas/archive/tags/Exchange+Web+Services/default.aspx" /><category term="Samples" scheme="http://blogs.msdn.com/vikas/archive/tags/Samples/default.aspx" /><category term="DevMsgTeam" scheme="http://blogs.msdn.com/vikas/archive/tags/DevMsgTeam/default.aspx" /><category term="Push Notification" scheme="http://blogs.msdn.com/vikas/archive/tags/Push+Notification/default.aspx" /><category term="Pull Notification" scheme="http://blogs.msdn.com/vikas/archive/tags/Pull+Notification/default.aspx" /><category term="GetItem" scheme="http://blogs.msdn.com/vikas/archive/tags/GetItem/default.aspx" /><category term="ExchangeServiceBinding" scheme="http://blogs.msdn.com/vikas/archive/tags/ExchangeServiceBinding/default.aspx" /><category term="GetAttachment" scheme="http://blogs.msdn.com/vikas/archive/tags/GetAttachment/default.aspx" /><category term="HasAttachment" scheme="http://blogs.msdn.com/vikas/archive/tags/HasAttachment/default.aspx" /><category term="UpdateItem" scheme="http://blogs.msdn.com/vikas/archive/tags/UpdateItem/default.aspx" /><category term="SetUserOofSettingsRequest" scheme="http://blogs.msdn.com/vikas/archive/tags/SetUserOofSettingsRequest/default.aspx" /><category term="ExchangeImpersonation" scheme="http://blogs.msdn.com/vikas/archive/tags/ExchangeImpersonation/default.aspx" /><category term="FindFolder" scheme="http://blogs.msdn.com/vikas/archive/tags/FindFolder/default.aspx" /><category term="CoolStuff" scheme="http://blogs.msdn.com/vikas/archive/tags/CoolStuff/default.aspx" /><category term="Announcements" scheme="http://blogs.msdn.com/vikas/archive/tags/Announcements/default.aspx" /><category term="SearchFolderType" scheme="http://blogs.msdn.com/vikas/archive/tags/SearchFolderType/default.aspx" /><category term="EWS Managed API" scheme="http://blogs.msdn.com/vikas/archive/tags/EWS+Managed+API/default.aspx" /><category term="FindItem" scheme="http://blogs.msdn.com/vikas/archive/tags/FindItem/default.aspx" /></entry><entry><title>HOWTO: Automatically Login to OWA 2007 using HTML + JavaScript</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/vikas/archive/2009/06/03/howto-automatically-login-to-owa-2007-using-html-javascript.aspx" /><id>http://blogs.msdn.com/vikas/archive/2009/06/03/howto-automatically-login-to-owa-2007-using-html-javascript.aspx</id><published>2009-06-03T03:09:11Z</published><updated>2009-06-03T03:09:11Z</updated><content type="html">&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;</content><author><name>Vikas Verma</name><uri>http://blogs.msdn.com/members/Vikas+Verma.aspx</uri></author><category term="Exchange" scheme="http://blogs.msdn.com/vikas/archive/tags/Exchange/default.aspx" /><category term="Exchange 2007" scheme="http://blogs.msdn.com/vikas/archive/tags/Exchange+2007/default.aspx" /><category term="HOWTO" scheme="http://blogs.msdn.com/vikas/archive/tags/HOWTO/default.aspx" /><category term="Samples" scheme="http://blogs.msdn.com/vikas/archive/tags/Samples/default.aspx" /><category term="Workarounds" scheme="http://blogs.msdn.com/vikas/archive/tags/Workarounds/default.aspx" /><category term="DevMsgTeam" scheme="http://blogs.msdn.com/vikas/archive/tags/DevMsgTeam/default.aspx" /><category term="Tip Of The Day" scheme="http://blogs.msdn.com/vikas/archive/tags/Tip+Of+The+Day/default.aspx" /><category term="CoolStuff" scheme="http://blogs.msdn.com/vikas/archive/tags/CoolStuff/default.aspx" /></entry><entry><title>HOWTO: EWS: Get OOF State for Self or any user in your organization</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/vikas/archive/2009/05/29/howto-ews-get-oof-state-for-self-or-any-user-in-your-organization.aspx" /><id>http://blogs.msdn.com/vikas/archive/2009/05/29/howto-ews-get-oof-state-for-self-or-any-user-in-your-organization.aspx</id><published>2009-05-29T19:00:28Z</published><updated>2009-05-29T19:00:28Z</updated><content type="html">&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;</content><author><name>Vikas Verma</name><uri>http://blogs.msdn.com/members/Vikas+Verma.aspx</uri></author><category term="Messaging" scheme="http://blogs.msdn.com/vikas/archive/tags/Messaging/default.aspx" /><category term="Exchange 2007" scheme="http://blogs.msdn.com/vikas/archive/tags/Exchange+2007/default.aspx" /><category term="HOWTO" scheme="http://blogs.msdn.com/vikas/archive/tags/HOWTO/default.aspx" /><category term="Exchange Web Services" scheme="http://blogs.msdn.com/vikas/archive/tags/Exchange+Web+Services/default.aspx" /><category term="Samples" scheme="http://blogs.msdn.com/vikas/archive/tags/Samples/default.aspx" /><category term="Workarounds" scheme="http://blogs.msdn.com/vikas/archive/tags/Workarounds/default.aspx" /><category term="DevMsgTeam" scheme="http://blogs.msdn.com/vikas/archive/tags/DevMsgTeam/default.aspx" /><category term="GetItem" scheme="http://blogs.msdn.com/vikas/archive/tags/GetItem/default.aspx" /><category term="ExchangeServiceBinding" scheme="http://blogs.msdn.com/vikas/archive/tags/ExchangeServiceBinding/default.aspx" /><category term="SetUserOofSettingsRequest" scheme="http://blogs.msdn.com/vikas/archive/tags/SetUserOofSettingsRequest/default.aspx" /><category term="ExchangeImpersonation" scheme="http://blogs.msdn.com/vikas/archive/tags/ExchangeImpersonation/default.aspx" /><category term="CoolStuff" scheme="http://blogs.msdn.com/vikas/archive/tags/CoolStuff/default.aspx" /><category term="Restrictions" scheme="http://blogs.msdn.com/vikas/archive/tags/Restrictions/default.aspx" /><category term="FindItem" scheme="http://blogs.msdn.com/vikas/archive/tags/FindItem/default.aspx" /></entry><entry><title>HOWTO: WebDAV: Send mail with Custom Form and set properties</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/vikas/archive/2009/05/22/howto-webdav-send-mail-with-custom-form-and-set-properties.aspx" /><id>http://blogs.msdn.com/vikas/archive/2009/05/22/howto-webdav-send-mail-with-custom-form-and-set-properties.aspx</id><published>2009-05-23T01:51:11Z</published><updated>2009-05-23T01:51:11Z</updated><content type="html">&lt;p&gt;This is going to be a very simple sample of how you can send an email with custom properties set and also change the message class so that it render on outlook as Custom Form.&lt;/p&gt;  &lt;p&gt;Prerequisites: A custom form must be published with same class name to render the email properly.&lt;/p&gt;  &lt;p&gt;How it works… &lt;/p&gt;  &lt;p&gt;Step 1) It drop an email in the drafts folder of user&lt;/p&gt;  &lt;p&gt;Step 2) Patches the properties to set Message Class &amp;amp; other properties, even including with special characters in name like Spaces and ‘/’&lt;/p&gt;  &lt;p&gt;Step 3) Drop the mail to DavMailSubmissionURL to send it&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Code:&lt;/strong&gt;&lt;/p&gt;  &lt;div class="csharpcode"&gt;&amp;#160;&lt;/div&gt;  &lt;div class="csharpcode"&gt;   &lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;Imports&lt;/span&gt; System.Net&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="kwrd"&gt;Imports&lt;/span&gt; System.IO&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;Imports&lt;/span&gt; System.Web&lt;/pre&gt;

  &lt;pre&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;Module&lt;/span&gt; Module1&lt;/pre&gt;

  &lt;pre&gt;    &lt;span class="kwrd"&gt;Const&lt;/span&gt; strServer &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;String&lt;/span&gt; = &lt;span class="str"&gt;&amp;quot;Exchange_Server_Name&amp;quot;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;    &lt;span class="kwrd"&gt;Const&lt;/span&gt; strMailbox &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;String&lt;/span&gt; = &lt;span class="str"&gt;&amp;quot;Target_Mailbox&amp;quot;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;    &lt;span class="kwrd"&gt;Const&lt;/span&gt; strFrom &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;String&lt;/span&gt; = &lt;span class="str"&gt;&amp;quot;from@domain.com&amp;quot;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;    &lt;span class="kwrd"&gt;Const&lt;/span&gt; strTo &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;String&lt;/span&gt; = &lt;span class="str"&gt;&amp;quot;to@domain.com&amp;quot;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;    &lt;span class="kwrd"&gt;Const&lt;/span&gt; strSubject &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;String&lt;/span&gt; = &lt;span class="str"&gt;&amp;quot;Custom form email - sent using WebDAV&amp;quot;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;    &lt;span class="kwrd"&gt;Const&lt;/span&gt; strBody &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;String&lt;/span&gt; = &lt;span class="str"&gt;&amp;quot;&amp;lt;B&amp;gt;Hello There,&amp;lt;/B&amp;gt;&amp;lt;BR&amp;gt; Hope you are doing good.&amp;lt;BR&amp;gt;Good Bye!!!&amp;quot;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;    &lt;span class="kwrd"&gt;Const&lt;/span&gt; strMessageClass &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;String&lt;/span&gt; = &lt;span class="str"&gt;&amp;quot;IPM.Note.TestMessageClass&amp;quot;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;    &lt;span class="kwrd"&gt;Const&lt;/span&gt; strDomain &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;String&lt;/span&gt; = &lt;span class="str"&gt;&amp;quot;DomainNameHere&amp;quot;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;    &lt;span class="kwrd"&gt;Const&lt;/span&gt; strUsername &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;String&lt;/span&gt; = &lt;span class="str"&gt;&amp;quot;UsernameToLoginWith&amp;quot;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;    &lt;span class="kwrd"&gt;Const&lt;/span&gt; strPassword &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;String&lt;/span&gt; = &lt;span class="str"&gt;&amp;quot;Password&amp;quot;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;    &lt;span class="kwrd"&gt;Dim&lt;/span&gt; objCDO &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;New&lt;/span&gt; CDO.Message&lt;/pre&gt;

  &lt;pre&gt;    &lt;span class="kwrd"&gt;Dim&lt;/span&gt; strMIME &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;String&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;    &lt;span class="kwrd"&gt;Dim&lt;/span&gt; sQuery &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;String&lt;/span&gt; = &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;    &lt;span class="kwrd"&gt;Dim&lt;/span&gt; sUri &lt;span class="kwrd"&gt;As&lt;/span&gt; Uri = &lt;span class="kwrd"&gt;New&lt;/span&gt; Uri(&lt;span class="str"&gt;&amp;quot;http://&amp;quot;&lt;/span&gt; &amp;amp; strServer &amp;amp; &lt;span class="str"&gt;&amp;quot;/Exchange/&amp;quot;&lt;/span&gt; + strMailbox &amp;amp; &lt;span class="str"&gt;&amp;quot;/Drafts/&amp;quot;&lt;/span&gt; &amp;amp; Guid.NewGuid().ToString() &amp;amp; &lt;span class="str"&gt;&amp;quot;.eml&amp;quot;&lt;/span&gt;)&lt;/pre&gt;

  &lt;pre&gt;    &lt;span class="kwrd"&gt;Dim&lt;/span&gt; sDavSubmissionURI &lt;span class="kwrd"&gt;As&lt;/span&gt; Uri = &lt;span class="kwrd"&gt;New&lt;/span&gt; Uri(&lt;span class="str"&gt;&amp;quot;http://&amp;quot;&lt;/span&gt; &amp;amp; strServer &amp;amp; &lt;span class="str"&gt;&amp;quot;/Exchange/&amp;quot;&lt;/span&gt; + strMailbox &amp;amp; &lt;span class="str"&gt;&amp;quot;/%23%23DavMailSubmissionURI%23%23/&amp;quot;&lt;/span&gt;)&lt;/pre&gt;

  &lt;pre class="alt"&gt;    &lt;span class="kwrd"&gt;Dim&lt;/span&gt; DavRequest &lt;span class="kwrd"&gt;As&lt;/span&gt; HttpWebRequest = &lt;span class="kwrd"&gt;DirectCast&lt;/span&gt;(WebRequest.Create(sUri), HttpWebRequest)&lt;/pre&gt;

  &lt;pre&gt;    &lt;span class="kwrd"&gt;Dim&lt;/span&gt; myCred &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;New&lt;/span&gt; NetworkCredential((strDomain &amp;amp; &lt;span class="str"&gt;&amp;quot;\&amp;quot;&lt;/span&gt; &amp;amp; strUsername), strPassword)&lt;/pre&gt;

  &lt;pre class="alt"&gt;    &lt;span class="kwrd"&gt;Dim&lt;/span&gt; myCredentialCache &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;New&lt;/span&gt; CredentialCache()&lt;/pre&gt;

  &lt;pre&gt;    &lt;span class="kwrd"&gt;Dim&lt;/span&gt; ByteQuery &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;Byte&lt;/span&gt;()&lt;/pre&gt;

  &lt;pre class="alt"&gt;    &lt;span class="kwrd"&gt;Dim&lt;/span&gt; QueryStream &lt;span class="kwrd"&gt;As&lt;/span&gt; Stream&lt;/pre&gt;

  &lt;pre&gt;    &lt;span class="kwrd"&gt;Dim&lt;/span&gt; DavResponse &lt;span class="kwrd"&gt;As&lt;/span&gt; HttpWebResponse&lt;/pre&gt;

  &lt;pre class="alt"&gt;    &lt;span class="kwrd"&gt;Dim&lt;/span&gt; iStatCode &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;Integer&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;    &lt;span class="kwrd"&gt;Dim&lt;/span&gt; sStatus &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;String&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;    &lt;span class="kwrd"&gt;Dim&lt;/span&gt; strm &lt;span class="kwrd"&gt;As&lt;/span&gt; Stream&lt;/pre&gt;

  &lt;pre&gt;    &lt;span class="kwrd"&gt;Dim&lt;/span&gt; sr &lt;span class="kwrd"&gt;As&lt;/span&gt; StreamReader&lt;/pre&gt;

  &lt;pre class="alt"&gt;    &lt;span class="kwrd"&gt;Dim&lt;/span&gt; sText &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;String&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;    &lt;span class="kwrd"&gt;Sub&lt;/span&gt; Main()&lt;/pre&gt;

  &lt;pre&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;        Console.WriteLine(&lt;span class="str"&gt;&amp;quot;Preparing message...&amp;quot;&lt;/span&gt;)&lt;/pre&gt;

  &lt;pre&gt;        PrepairMessage()&lt;/pre&gt;

  &lt;pre class="alt"&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre&gt;        Console.WriteLine(&lt;span class="str"&gt;&amp;quot;Creating message in draft folder...&amp;quot;&lt;/span&gt;)&lt;/pre&gt;

  &lt;pre class="alt"&gt;        CreateMessageInDraft()&lt;/pre&gt;

  &lt;pre&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;        Console.WriteLine(&lt;span class="str"&gt;&amp;quot;Updating message class &amp;amp; other properties...&amp;quot;&lt;/span&gt;)&lt;/pre&gt;

  &lt;pre&gt;        SetMessageProperties()&lt;/pre&gt;

  &lt;pre class="alt"&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre&gt;        Console.WriteLine(&lt;span class="str"&gt;&amp;quot;Sending message...&amp;quot;&lt;/span&gt;)&lt;/pre&gt;

  &lt;pre class="alt"&gt;        SendMessage()&lt;/pre&gt;

  &lt;pre&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;        Console.WriteLine(&lt;span class="str"&gt;&amp;quot;Message Sent&amp;quot;&lt;/span&gt;)&lt;/pre&gt;

  &lt;pre&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre&gt;    &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;Sub&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre&gt;    &lt;span class="kwrd"&gt;Sub&lt;/span&gt; PrepairMessage()&lt;/pre&gt;

  &lt;pre class="alt"&gt;        &lt;span class="kwrd"&gt;With&lt;/span&gt; objCDO&lt;/pre&gt;

  &lt;pre&gt;            .From = strFrom&lt;/pre&gt;

  &lt;pre class="alt"&gt;            .&lt;span class="kwrd"&gt;To&lt;/span&gt; = strTo&lt;/pre&gt;

  &lt;pre&gt;            .Subject = strSubject&lt;/pre&gt;

  &lt;pre class="alt"&gt;            .HTMLBody = strBody&lt;/pre&gt;

  &lt;pre&gt;            strMIME = .GetStream.ReadText&lt;/pre&gt;

  &lt;pre class="alt"&gt;        &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;With&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;        sQuery = strMIME&lt;/pre&gt;

  &lt;pre&gt;    &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;Sub&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;    &lt;span class="kwrd"&gt;Sub&lt;/span&gt; CreateMessageInDraft()&lt;/pre&gt;

  &lt;pre&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;        myCredentialCache.Add(sUri, &lt;span class="str"&gt;&amp;quot;Basic&amp;quot;&lt;/span&gt;, myCred)&lt;/pre&gt;

  &lt;pre&gt;        DavRequest.Credentials = myCredentialCache&lt;/pre&gt;

  &lt;pre class="alt"&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;        DavRequest.KeepAlive = &lt;span class="kwrd"&gt;False&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;        DavRequest.Headers.&lt;span class="kwrd"&gt;Set&lt;/span&gt;(&lt;span class="str"&gt;&amp;quot;Translate&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;f&amp;quot;&lt;/span&gt;)&lt;/pre&gt;

  &lt;pre class="alt"&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre&gt;        DavRequest.ContentType = &lt;span class="str"&gt;&amp;quot;message/rfc822&amp;quot;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;        DavRequest.ContentLength = sQuery.Length&lt;/pre&gt;

  &lt;pre&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;        &lt;span class="rem"&gt;'Set the request timeout to 5 minutes.&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;        DavRequest.Timeout = 300000&lt;/pre&gt;

  &lt;pre class="alt"&gt;        &lt;span class="rem"&gt;' Set the request method.&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;        DavRequest.Method = &lt;span class="str"&gt;&amp;quot;PUT&amp;quot;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;        &lt;span class="rem"&gt;' Store the data in a byte array.&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;        ByteQuery = System.Text.Encoding.UTF8.GetBytes(sQuery)&lt;/pre&gt;

  &lt;pre class="alt"&gt;        DavRequest.ContentLength = ByteQuery.Length&lt;/pre&gt;

  &lt;pre&gt;        QueryStream = DavRequest.GetRequestStream()&lt;/pre&gt;

  &lt;pre class="alt"&gt;        &lt;span class="rem"&gt;' write the data to be posted to the Request Stream&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;        QueryStream.Write(ByteQuery, 0, ByteQuery.Length)&lt;/pre&gt;

  &lt;pre class="alt"&gt;        QueryStream.Close()&lt;/pre&gt;

  &lt;pre&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;        QueryStream = &lt;span class="kwrd"&gt;Nothing&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;        &lt;span class="rem"&gt;' Send the request and get the response.&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;        DavResponse = &lt;span class="kwrd"&gt;DirectCast&lt;/span&gt;(DavRequest.GetResponse(), HttpWebResponse)&lt;/pre&gt;

  &lt;pre class="alt"&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre&gt;        &lt;span class="rem"&gt;' Get the Status code.&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;        iStatCode = &lt;span class="kwrd"&gt;CInt&lt;/span&gt;(DavResponse.StatusCode)&lt;/pre&gt;

  &lt;pre&gt;        sStatus = iStatCode.ToString()&lt;/pre&gt;

  &lt;pre class="alt"&gt;        Console.WriteLine(&lt;span class="str"&gt;&amp;quot;Status Code: &amp;quot;&lt;/span&gt; &amp;amp; sStatus.ToString())&lt;/pre&gt;

  &lt;pre&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;        &lt;span class="rem"&gt;' Read the response stream.&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;        strm = DavResponse.GetResponseStream()&lt;/pre&gt;

  &lt;pre class="alt"&gt;        sr = &lt;span class="kwrd"&gt;New&lt;/span&gt; StreamReader(strm)&lt;/pre&gt;

  &lt;pre&gt;        sText = sr.ReadToEnd()&lt;/pre&gt;

  &lt;pre class="alt"&gt;        Console.WriteLine(&lt;span class="str"&gt;&amp;quot;Response: &amp;quot;&lt;/span&gt; &amp;amp; sText)&lt;/pre&gt;

  &lt;pre&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;        &lt;span class="rem"&gt;' Close the stream.&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;        strm.Close()&lt;/pre&gt;

  &lt;pre class="alt"&gt;    &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;Sub&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;    &lt;span class="kwrd"&gt;Sub&lt;/span&gt; SetMessageProperties()&lt;/pre&gt;

  &lt;pre class="alt"&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;        &lt;span class="kwrd"&gt;Dim&lt;/span&gt; sPropPatch &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;String&lt;/span&gt; = &lt;span class="str"&gt;&amp;quot;&amp;lt;?xml version=&amp;quot;&lt;/span&gt;&lt;span class="str"&gt;&amp;quot;1.0&amp;quot;&lt;/span&gt;&lt;span class="str"&gt;&amp;quot;?&amp;gt;&amp;quot;&lt;/span&gt; + _&lt;/pre&gt;

  &lt;pre&gt;        &lt;span class="str"&gt;&amp;quot;&amp;lt;g:propertyupdate xmlns:g=&amp;quot;&lt;/span&gt;&lt;span class="str"&gt;&amp;quot;DAV:&amp;quot;&lt;/span&gt;&lt;span class="str"&gt;&amp;quot;&amp;gt;&amp;quot;&lt;/span&gt; + _&lt;/pre&gt;

  &lt;pre class="alt"&gt;        &lt;span class="str"&gt;&amp;quot;&amp;lt;g:set&amp;gt;&amp;quot;&lt;/span&gt; + _&lt;/pre&gt;

  &lt;pre&gt;        &lt;span class="str"&gt;&amp;quot;&amp;lt;g:prop&amp;gt;&amp;quot;&lt;/span&gt; + _&lt;/pre&gt;

  &lt;pre class="alt"&gt;        &lt;span class="str"&gt;&amp;quot;&amp;lt;d:outlookmessageclass xmlns:d=&amp;quot;&lt;/span&gt;&lt;span class="str"&gt;&amp;quot;http://schemas.microsoft.com/exchange/&amp;quot;&lt;/span&gt;&lt;span class="str"&gt;&amp;quot;&amp;gt;&amp;quot;&lt;/span&gt; &amp;amp; strMessageClass &amp;amp; &lt;span class="str"&gt;&amp;quot;&amp;lt;/d:outlookmessageclass&amp;gt;&amp;quot;&lt;/span&gt; + _&lt;/pre&gt;

  &lt;pre&gt;        &lt;span class="str"&gt;&amp;quot;&amp;lt;NewCustomProperty&amp;gt;&amp;quot;&lt;/span&gt; &amp;amp; &lt;span class="str"&gt;&amp;quot;CustomProperty1&amp;quot;&lt;/span&gt; &amp;amp; &lt;span class="str"&gt;&amp;quot;&amp;lt;/NewCustomProperty&amp;gt;&amp;quot;&lt;/span&gt; + _&lt;/pre&gt;

  &lt;pre class="alt"&gt;        &lt;span class="str"&gt;&amp;quot;&amp;lt;/g:prop&amp;gt;&amp;quot;&lt;/span&gt; + _&lt;/pre&gt;

  &lt;pre&gt;        &lt;span class="str"&gt;&amp;quot;&amp;lt;/g:set&amp;gt;&amp;quot;&lt;/span&gt; + _&lt;/pre&gt;

  &lt;pre class="alt"&gt;        &lt;span class="str"&gt;&amp;quot;&amp;lt;/g:propertyupdate&amp;gt;&amp;quot;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;        DavRequest = &lt;span class="kwrd"&gt;Nothing&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;        DavResponse = &lt;span class="kwrd"&gt;Nothing&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;        DavRequest = &lt;span class="kwrd"&gt;DirectCast&lt;/span&gt;(WebRequest.Create(sUri), HttpWebRequest)&lt;/pre&gt;

  &lt;pre&gt;        DavRequest.Credentials = myCredentialCache&lt;/pre&gt;

  &lt;pre class="alt"&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre&gt;        DavRequest.KeepAlive = &lt;span class="kwrd"&gt;False&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;        DavRequest.Headers.&lt;span class="kwrd"&gt;Set&lt;/span&gt;(&lt;span class="str"&gt;&amp;quot;Translate&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;f&amp;quot;&lt;/span&gt;)&lt;/pre&gt;

  &lt;pre&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;        DavRequest.ContentType = &lt;span class="str"&gt;&amp;quot;text/xml&amp;quot;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;        DavRequest.ContentLength = sQuery.Length&lt;/pre&gt;

  &lt;pre class="alt"&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre&gt;        &lt;span class="rem"&gt;'Set the request timeout to 5 minutes.&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;        DavRequest.Timeout = 300000&lt;/pre&gt;

  &lt;pre&gt;        &lt;span class="rem"&gt;' Set the request method.&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;        DavRequest.Method = &lt;span class="str"&gt;&amp;quot;PROPPATCH&amp;quot;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;        &lt;span class="rem"&gt;' Store the data in a byte array.&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;        ByteQuery = System.Text.Encoding.UTF8.GetBytes(sPropPatch)&lt;/pre&gt;

  &lt;pre class="alt"&gt;        DavRequest.ContentLength = ByteQuery.Length&lt;/pre&gt;

  &lt;pre&gt;        QueryStream = DavRequest.GetRequestStream()&lt;/pre&gt;

  &lt;pre class="alt"&gt;        &lt;span class="rem"&gt;' write the data to be posted to the Request Stream&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;        QueryStream.Write(ByteQuery, 0, ByteQuery.Length)&lt;/pre&gt;

  &lt;pre class="alt"&gt;        QueryStream.Close()&lt;/pre&gt;

  &lt;pre&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;        QueryStream = &lt;span class="kwrd"&gt;Nothing&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;        &lt;span class="rem"&gt;' Send the request and get the response.&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;        DavResponse = &lt;span class="kwrd"&gt;DirectCast&lt;/span&gt;(DavRequest.GetResponse(), HttpWebResponse)&lt;/pre&gt;

  &lt;pre class="alt"&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre&gt;        &lt;span class="rem"&gt;' Get the Status code.&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;        iStatCode = &lt;span class="kwrd"&gt;CInt&lt;/span&gt;(DavResponse.StatusCode)&lt;/pre&gt;

  &lt;pre&gt;        sStatus = iStatCode.ToString()&lt;/pre&gt;

  &lt;pre class="alt"&gt;        Console.WriteLine(&lt;span class="str"&gt;&amp;quot;Status Code: &amp;quot;&lt;/span&gt; &amp;amp; sStatus.ToString())&lt;/pre&gt;

  &lt;pre&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;        &lt;span class="rem"&gt;' Read the response stream.&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;        strm = DavResponse.GetResponseStream()&lt;/pre&gt;

  &lt;pre class="alt"&gt;        sr = &lt;span class="kwrd"&gt;New&lt;/span&gt; StreamReader(strm)&lt;/pre&gt;

  &lt;pre&gt;        sText = sr.ReadToEnd()&lt;/pre&gt;

  &lt;pre class="alt"&gt;        Console.WriteLine(&lt;span class="str"&gt;&amp;quot;Response: &amp;quot;&lt;/span&gt; &amp;amp; sText)&lt;/pre&gt;

  &lt;pre&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;        &lt;span class="rem"&gt;' Close the stream.&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;        strm.Close()&lt;/pre&gt;

  &lt;pre class="alt"&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;        DavResponse = &lt;span class="kwrd"&gt;Nothing&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;        DavRequest = &lt;span class="kwrd"&gt;Nothing&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;    &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;Sub&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;    &lt;span class="kwrd"&gt;Sub&lt;/span&gt; SendMessage()&lt;/pre&gt;

  &lt;pre class="alt"&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre&gt;        DavRequest = &lt;span class="kwrd"&gt;Nothing&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;        DavResponse = &lt;span class="kwrd"&gt;Nothing&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre&gt;        DavRequest = &lt;span class="kwrd"&gt;DirectCast&lt;/span&gt;(WebRequest.Create(sUri), HttpWebRequest)&lt;/pre&gt;

  &lt;pre class="alt"&gt;        DavRequest.Credentials = myCredentialCache&lt;/pre&gt;

  &lt;pre&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;        &lt;span class="rem"&gt;'Set the request timeout to 5 minutes.&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;        DavRequest.Timeout = 300000&lt;/pre&gt;

  &lt;pre class="alt"&gt;        &lt;span class="rem"&gt;' Set the request method.&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;        DavRequest.Method = &lt;span class="str"&gt;&amp;quot;MOVE&amp;quot;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;        DavRequest.Headers.Add(&lt;span class="str"&gt;&amp;quot;Destination&amp;quot;&lt;/span&gt;, sDavSubmissionURI.ToString())&lt;/pre&gt;

  &lt;pre&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;        &lt;span class="rem"&gt;' Send the request and get the response.&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;        DavResponse = &lt;span class="kwrd"&gt;DirectCast&lt;/span&gt;(DavRequest.GetResponse(), HttpWebResponse)&lt;/pre&gt;

  &lt;pre class="alt"&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre&gt;        &lt;span class="rem"&gt;' Get the Status code.&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;        iStatCode = &lt;span class="kwrd"&gt;CInt&lt;/span&gt;(DavResponse.StatusCode)&lt;/pre&gt;

  &lt;pre&gt;        sStatus = iStatCode.ToString()&lt;/pre&gt;

  &lt;pre class="alt"&gt;        Console.WriteLine(&lt;span class="str"&gt;&amp;quot;Status Code: &amp;quot;&lt;/span&gt; &amp;amp; sStatus.ToString())&lt;/pre&gt;

  &lt;pre&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;        &lt;span class="rem"&gt;' Read the response stream.&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;        strm = DavResponse.GetResponseStream()&lt;/pre&gt;

  &lt;pre class="alt"&gt;        sr = &lt;span class="kwrd"&gt;New&lt;/span&gt; StreamReader(strm)&lt;/pre&gt;

  &lt;pre&gt;        sText = sr.ReadToEnd()&lt;/pre&gt;

  &lt;pre class="alt"&gt;        Console.WriteLine(&lt;span class="str"&gt;&amp;quot;Response: &amp;quot;&lt;/span&gt; &amp;amp; sText)&lt;/pre&gt;

  &lt;pre&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;        &lt;span class="rem"&gt;' Close the stream.&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;        strm.Close()&lt;/pre&gt;

  &lt;pre class="alt"&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;        DavResponse = &lt;span class="kwrd"&gt;Nothing&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;        DavRequest = &lt;span class="kwrd"&gt;Nothing&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre&gt;    &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;Sub&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;Module&lt;/span&gt;&lt;/pre&gt;
&lt;/div&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;strong&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Note: I will update the sample to include custom properties with special characters soon… last edited: 5/23/09 4:19 AM&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9636175" width="1" height="1"&gt;</content><author><name>Vikas Verma</name><uri>http://blogs.msdn.com/members/Vikas+Verma.aspx</uri></author><category term="Exchange" scheme="http://blogs.msdn.com/vikas/archive/tags/Exchange/default.aspx" /><category term="Messaging" scheme="http://blogs.msdn.com/vikas/archive/tags/Messaging/default.aspx" /><category term="HOWTO" scheme="http://blogs.msdn.com/vikas/archive/tags/HOWTO/default.aspx" /><category term="CDOSYS" scheme="http://blogs.msdn.com/vikas/archive/tags/CDOSYS/default.aspx" /><category term="WEBDAV" scheme="http://blogs.msdn.com/vikas/archive/tags/WEBDAV/default.aspx" /><category term="Samples" scheme="http://blogs.msdn.com/vikas/archive/tags/Samples/default.aspx" /><category term="Windows Live Writer" scheme="http://blogs.msdn.com/vikas/archive/tags/Windows+Live+Writer/default.aspx" /><category term="DevMsgTeam" scheme="http://blogs.msdn.com/vikas/archive/tags/DevMsgTeam/default.aspx" /><category term="CoolStuff" scheme="http://blogs.msdn.com/vikas/archive/tags/CoolStuff/default.aspx" /></entry><entry><title>Announcement: EWS Managed API launching tomorrow 04/15/09</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/vikas/archive/2009/04/14/announcement-ews-managed-api-launching-tomorrow-04-15-09.aspx" /><id>http://blogs.msdn.com/vikas/archive/2009/04/14/announcement-ews-managed-api-launching-tomorrow-04-15-09.aspx</id><published>2009-04-15T00:57:35Z</published><updated>2009-04-15T00:57:35Z</updated><content type="html">&lt;p&gt;Good news for all .Net developers working with Exchange or willing to work with Exchange but have zero experience in the domain.&lt;/p&gt;  &lt;p&gt;Exchange Team had been working so hard to reduce your efforts and improve your efficiency. &lt;/p&gt;  &lt;p&gt;Check out these videos to see what EWS Managed API is capable of &lt;/p&gt;  &lt;p&gt;&lt;a title="http://channel9.msdn.com/pdc2008/BB46/" 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 title="http://msexchangeteam.com/archive/2009/03/24/450892.aspx" 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;p&gt;Keep a watch on here as it will go live in few hours, be the first one to grab it - &lt;a title="http://msdn.microsoft.com/exchange" href="http://msdn.microsoft.com/exchange"&gt;http://msdn.microsoft.com/exchange&lt;/a&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9549504" width="1" height="1"&gt;</content><author><name>Vikas Verma</name><uri>http://blogs.msdn.com/members/Vikas+Verma.aspx</uri></author><category term="Messaging" scheme="http://blogs.msdn.com/vikas/archive/tags/Messaging/default.aspx" /><category term="Exchange 2007" scheme="http://blogs.msdn.com/vikas/archive/tags/Exchange+2007/default.aspx" /><category term="Exchange Web Services" scheme="http://blogs.msdn.com/vikas/archive/tags/Exchange+Web+Services/default.aspx" /><category term="DevMsgTeam" scheme="http://blogs.msdn.com/vikas/archive/tags/DevMsgTeam/default.aspx" /><category term="CoolStuff" scheme="http://blogs.msdn.com/vikas/archive/tags/CoolStuff/default.aspx" /><category term="Announcements" scheme="http://blogs.msdn.com/vikas/archive/tags/Announcements/default.aspx" /><category term="EWS Managed API" scheme="http://blogs.msdn.com/vikas/archive/tags/EWS+Managed+API/default.aspx" /></entry><entry><title>Searchfolder created from EWS is not displaying items falling under criteria within Outlook</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/vikas/archive/2009/04/09/searchfolder-created-from-ews-is-not-displaying-items-falling-under-criteria-within-outlook.aspx" /><id>http://blogs.msdn.com/vikas/archive/2009/04/09/searchfolder-created-from-ews-is-not-displaying-items-falling-under-criteria-within-outlook.aspx</id><published>2009-04-09T23:53:23Z</published><updated>2009-04-09T23:53:23Z</updated><content type="html">&lt;p&gt;I have been working on different SearchFolders cases lately where customers were trying to create SearchFolder using EWS. Working on those issues has uncovered a limitation of Outlook (I tested it on 2007, but may exist with earlier versions as well)&lt;/p&gt;  &lt;p&gt;I created the search folder using the following XML&lt;/p&gt;  &lt;div&gt;   &lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;?&lt;/span&gt;&lt;span style="color: #800000"&gt;xml&lt;/span&gt; &lt;span style="color: #ff0000"&gt;version&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;1.0&amp;quot;&lt;/span&gt;?&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;
&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;CreateFolderType&lt;/span&gt; &lt;span style="color: #ff0000"&gt;xmlns:xsi&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;xmlns:xsd&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;
  &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;ParentFolderId&lt;/span&gt; &lt;span style="color: #ff0000"&gt;xmlns&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;http://schemas.microsoft.com/exchange/services/2006/messages&amp;quot;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;
    &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;DistinguishedFolderId&lt;/span&gt; &lt;span style="color: #ff0000"&gt;Id&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;searchfolders&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;xmlns&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;http://schemas.microsoft.com/exchange/services/2006/types&amp;quot;&lt;/span&gt; &lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;
  &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;ParentFolderId&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;
  &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;Folders&lt;/span&gt; &lt;span style="color: #ff0000"&gt;xmlns&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;http://schemas.microsoft.com/exchange/services/2006/messages&amp;quot;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;
    &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;SearchFolder&lt;/span&gt; &lt;span style="color: #ff0000"&gt;xmlns&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;http://schemas.microsoft.com/exchange/services/2006/types&amp;quot;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;
      &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;DisplayName&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;Employee Search&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;DisplayName&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;
      &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;SearchParameters&lt;/span&gt; &lt;span style="color: #ff0000"&gt;Traversal&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;Deep&amp;quot;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;
        &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;Restriction&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;
          &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;And&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;
            &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;IsNotEqualTo&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;
              &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;ExtendedFieldURI&lt;/span&gt; &lt;span style="color: #ff0000"&gt;DistinguishedPropertySetId&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;PublicStrings&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;PropertyName&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;EmployeeID&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;PropertyType&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;String&amp;quot;&lt;/span&gt; &lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;
              &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;FieldURIOrConstant&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;
                &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;Constant&lt;/span&gt; &lt;span style="color: #ff0000"&gt;Value&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;&amp;quot;&lt;/span&gt; &lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;
              &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;FieldURIOrConstant&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;
            &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;IsNotEqualTo&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;
            &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;Exists&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;
              &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;ExtendedFieldURI&lt;/span&gt; &lt;span style="color: #ff0000"&gt;DistinguishedPropertySetId&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;PublicStrings&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;PropertyName&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;CustomPropertyName&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;PropertyType&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;String&amp;quot;&lt;/span&gt; &lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;
            &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;Exists&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;
          &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;And&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;
        &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;Restriction&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;
        &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;BaseFolderIds&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;
          &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;DistinguishedFolderId&lt;/span&gt; &lt;span style="color: #ff0000"&gt;Id&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;inbox&amp;quot;&lt;/span&gt; &lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;
        &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;BaseFolderIds&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;
      &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;SearchParameters&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;
    &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;SearchFolder&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;
  &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;Folders&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;                                                                  
&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;CreateFolderType&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;I have created an email with custom property and it has some value in there to meet the criteria. The search folder is created and visible in the Outlook but I still do not see any entries under that folder. I also tried with just &amp;quot;Exists&amp;quot; criteria for the custom property but still it does not list the item. Then I created another SearchFolder with specific words in subject and itemClass = IPM.NOTE and that works fine… surprised!!&lt;/p&gt;

&lt;p&gt;I went ahead and tried to test the Search Folder from OWA, to further add to my surprise it was not even listed in OWA… strange!! So then I dig into support.microsoft.com and found the following KB - &lt;a href="http://support.microsoft.com/kb/831400"&gt;http://support.microsoft.com/kb/831400&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Symptoms&lt;/strong&gt;: When you create Search Folders in Microsoft Office Outlook 2007 and Microsoft Office Outlook 2003in a Microsoft Exchange profile, the Search Folders do not appear in Microsoft Outlook Web Access.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Cause&lt;/strong&gt;: This behavior occurs when you use Outlook in Cached Exchange Mode. The local copy of your mailbox maintains a Finder folder. This folder is not synchronized with the Finder folder that is in your Microsoft Exchange mailbox.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Resolution&lt;/strong&gt;: Switch to online mode, expand search folders, let it sync with server and then you should be able to see.&lt;/p&gt;

&lt;p&gt;I followed the resolution steps and now I can see the items in OWA &amp;amp; also in Outlook… relief!!&lt;/p&gt;

&lt;p&gt;&lt;em&gt;&lt;strong&gt;Happy Debugging…&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9541416" width="1" height="1"&gt;</content><author><name>Vikas Verma</name><uri>http://blogs.msdn.com/members/Vikas+Verma.aspx</uri></author><category term="Exchange" scheme="http://blogs.msdn.com/vikas/archive/tags/Exchange/default.aspx" /><category term="Exchange 2007" scheme="http://blogs.msdn.com/vikas/archive/tags/Exchange+2007/default.aspx" /><category term="Search Folder" scheme="http://blogs.msdn.com/vikas/archive/tags/Search+Folder/default.aspx" /><category term="HOWTO" scheme="http://blogs.msdn.com/vikas/archive/tags/HOWTO/default.aspx" /><category term="Exchange Web Services" scheme="http://blogs.msdn.com/vikas/archive/tags/Exchange+Web+Services/default.aspx" /><category term="Samples" scheme="http://blogs.msdn.com/vikas/archive/tags/Samples/default.aspx" /><category term="DevMsgTeam" scheme="http://blogs.msdn.com/vikas/archive/tags/DevMsgTeam/default.aspx" /><category term="ExchangeServiceBinding" scheme="http://blogs.msdn.com/vikas/archive/tags/ExchangeServiceBinding/default.aspx" /><category term="CreateFolderType" scheme="http://blogs.msdn.com/vikas/archive/tags/CreateFolderType/default.aspx" /><category term="SearchFolderType" scheme="http://blogs.msdn.com/vikas/archive/tags/SearchFolderType/default.aspx" /></entry><entry><title>HOW TO: Create SearchFolder to search for Custom Properties using EWS</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/vikas/archive/2009/04/09/how-to-create-searchfolder-to-search-for-custom-properties-using-ews.aspx" /><id>http://blogs.msdn.com/vikas/archive/2009/04/09/how-to-create-searchfolder-to-search-for-custom-properties-using-ews.aspx</id><published>2009-04-09T23:34:40Z</published><updated>2009-04-09T23:34:40Z</updated><content type="html">&lt;p&gt;Here is a quick sample if you are looking at creating a search folder using EWS which will look for Custom Property. &lt;/p&gt;  &lt;p&gt;Here we are looking for a custom property named “EmployeeID” and make sure that the property exist and does not have a blank value.&lt;/p&gt;  &lt;div&gt;   &lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;static&lt;/span&gt; BaseFolderType CreateCustomPropSearchFolder()
       {
           
           &lt;span style="color: #008000"&gt;//Base folder type&lt;/span&gt;
           FolderIdType folderID = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; FolderIdType();

           &lt;span style="color: #008000"&gt;//create the request that will create a new searchfolder under the finder directory&lt;/span&gt;
           CreateFolderType folderType = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; CreateFolderType();

           &lt;span style="color: #008000"&gt;// inherited type from FolderType&lt;/span&gt;
           SearchFolderType[] folderArray = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; SearchFolderType[1];

           folderArray[0] = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; SearchFolderType();
           folderArray[0].SearchParameters = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; SearchParametersType();

           &lt;span style="color: #008000"&gt;// Go a Deep traversal and search every folder inside parent folder&lt;/span&gt;
           folderArray[0].SearchParameters.Traversal = SearchFolderTraversalType.Deep;        &lt;span style="color: #008000"&gt;// deep traversal&lt;/span&gt;
           folderArray[0].SearchParameters.TraversalSpecified = &lt;span style="color: #0000ff"&gt;true&lt;/span&gt;;                        &lt;span style="color: #008000"&gt;// must set it to true otherwise traversal will have no effect&lt;/span&gt;


           &lt;span style="color: #008000"&gt;//Define the base folder to search under, in this case its Inbox&lt;/span&gt;
           folderArray[0].SearchParameters.BaseFolderIds = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; DistinguishedFolderIdType[1];
           DistinguishedFolderIdType dType = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; DistinguishedFolderIdType();
           dType.Id = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; DistinguishedFolderIdNameType();
           dType.Id = DistinguishedFolderIdNameType.inbox;                                    &lt;span style="color: #008000"&gt;//  we are looking at Inbox only&lt;/span&gt;
           folderArray[0].SearchParameters.BaseFolderIds[0] = dType;


           
           folderArray[0].SearchParameters.Restriction = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; RestrictionType();


           PathToExtendedFieldType CustomPropPath = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; PathToExtendedFieldType();
           CustomPropPath.DistinguishedPropertySetId = DistinguishedPropertySetType.PublicStrings;
           CustomPropPath.DistinguishedPropertySetIdSpecified = &lt;span style="color: #0000ff"&gt;true&lt;/span&gt;;
           CustomPropPath.PropertyName = &lt;span style="color: #006080"&gt;&amp;quot;EmployeeID&amp;quot;&lt;/span&gt;;
           CustomPropPath.PropertyType = MapiPropertyTypeType.String;

           ExistsType existsType = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; ExistsType();
           existsType.Item = CustomPropPath;
           

           &lt;span style="color: #008000"&gt;// First part where the &lt;/span&gt;
           IsNotEqualToType isNotEqualType = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; IsNotEqualToType();
           isNotEqualType.FieldURIOrConstant = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; FieldURIOrConstantType();

           &lt;span style="color: #008000"&gt;//Actual value of property that we are looking at&lt;/span&gt;
           ConstantValueType customPropertyValue = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; ConstantValueType();
           customPropertyValue.Value = &lt;span style="color: #0000ff"&gt;string&lt;/span&gt;.Empty;

           isNotEqualType.FieldURIOrConstant.Item = customPropertyValue;

           
           isNotEqualType.Item = CustomPropPath;
           

           &lt;span style="color: #008000"&gt;// Create a AND EXPRESSION &amp;amp; add two condition to it&lt;/span&gt;
           AndType andTypeExpressions = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; AndType();
           andTypeExpressions.Items = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; SearchExpressionType[] {isNotEqualType,existsType };
           

           folderArray[0].SearchParameters.Restriction.Item = andTypeExpressions;
           folderArray[0].DisplayName = &lt;span style="color: #006080"&gt;&amp;quot;Employee Search&amp;quot;&lt;/span&gt;;                        &lt;span style="color: #008000"&gt;// Give your search folder a unique name&lt;/span&gt;
           folderType.Folders = folderArray;

           TargetFolderIdType targetFolder = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; TargetFolderIdType();

           &lt;span style="color: #008000"&gt;//Create the searchfolder under the Finder Folder&lt;/span&gt;

           DistinguishedFolderIdType searchFolder = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; DistinguishedFolderIdType();

           searchFolder.Id = DistinguishedFolderIdNameType.searchfolders;                    &lt;span style="color: #008000"&gt;// Saving it under searchfolders root&lt;/span&gt;

           targetFolder.Item = searchFolder;

           folderType.ParentFolderId = targetFolder;

           &lt;span style="color: #008000"&gt;// Uncomment the following lines of code to make it a hidden search folder, can be consumed by other programs and not visible to users&lt;/span&gt;


           &lt;span style="color: #008000"&gt;// folderArray[0].ExtendedProperty = new ExtendedPropertyType[1];&lt;/span&gt;
           &lt;span style="color: #008000"&gt;// folderArray[0].ExtendedProperty[0] = new ExtendedPropertyType();&lt;/span&gt;
           &lt;span style="color: #008000"&gt;// folderArray[0].ExtendedProperty[0].ExtendedFieldURI = new PathToExtendedFieldType();&lt;/span&gt;
           &lt;span style="color: #008000"&gt;// folderArray[0].ExtendedProperty[0].ExtendedFieldURI.PropertyTag=&amp;quot;0x10F4&amp;quot;;   //PR_ATTR_HIDDEN&lt;/span&gt;
           &lt;span style="color: #008000"&gt;// folderArray[0].ExtendedProperty[0].ExtendedFieldURI.PropertyType = MapiPropertyTypeType.Boolean;&lt;/span&gt;
           &lt;span style="color: #008000"&gt;// folderArray[0].ExtendedProperty[0].Item = &amp;quot;true&amp;quot;;&lt;/span&gt;



           &lt;span style="color: #008000"&gt;//Create the search folder&lt;/span&gt;
           CreateFolderResponseType createFolderResponse = esb.CreateFolder(folderType);
           &lt;span style="color: #008000"&gt;//Return the newly created search folder&lt;/span&gt;

           FolderInfoResponseMessageType folderInfo = (FolderInfoResponseMessageType)createFolderResponse.ResponseMessages.Items[0];

           &lt;span style="color: #0000ff"&gt;return&lt;/span&gt; folderInfo.Folders.Length == 0 ? &lt;span style="color: #0000ff"&gt;null&lt;/span&gt; : folderInfo.Folders[0];

       }&lt;/pre&gt;
&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9541375" width="1" height="1"&gt;</content><author><name>Vikas Verma</name><uri>http://blogs.msdn.com/members/Vikas+Verma.aspx</uri></author><category term="Exchange" scheme="http://blogs.msdn.com/vikas/archive/tags/Exchange/default.aspx" /><category term="Exchange 2007" scheme="http://blogs.msdn.com/vikas/archive/tags/Exchange+2007/default.aspx" /><category term="Search Folder" scheme="http://blogs.msdn.com/vikas/archive/tags/Search+Folder/default.aspx" /><category term="HOWTO" scheme="http://blogs.msdn.com/vikas/archive/tags/HOWTO/default.aspx" /><category term="Exchange Web Services" scheme="http://blogs.msdn.com/vikas/archive/tags/Exchange+Web+Services/default.aspx" /><category term="Samples" scheme="http://blogs.msdn.com/vikas/archive/tags/Samples/default.aspx" /><category term="DevMsgTeam" scheme="http://blogs.msdn.com/vikas/archive/tags/DevMsgTeam/default.aspx" /><category term="ExchangeServiceBinding" scheme="http://blogs.msdn.com/vikas/archive/tags/ExchangeServiceBinding/default.aspx" /><category term="CreateFolderType" scheme="http://blogs.msdn.com/vikas/archive/tags/CreateFolderType/default.aspx" /><category term="SearchFolderType" scheme="http://blogs.msdn.com/vikas/archive/tags/SearchFolderType/default.aspx" /></entry><entry><title>HOWTO: Query information related to ProgID &amp; CLSID, verify where the image is loaded from Disk.</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/vikas/archive/2009/04/09/howto-query-information-related-to-progid-clsid-verify-where-the-image-is-loaded-from-disk.aspx" /><id>http://blogs.msdn.com/vikas/archive/2009/04/09/howto-query-information-related-to-progid-clsid-verify-where-the-image-is-loaded-from-disk.aspx</id><published>2009-04-09T22:12:50Z</published><updated>2009-04-09T22:12:50Z</updated><content type="html">&lt;p align="justify"&gt;Ever copied a DLL from one system to another and registered it using RegSvr32.exe? or in other words ever created a DLL hell situation? Its easy and dirty at the same time to copy-paste DLL between systems and register them using regsvr32.exe&lt;/p&gt;  &lt;p align="justify"&gt;Often you copy-paste, register DLL from temporary folders or may be desktop and then later delete the DLL or move to other folder without unregistering/re-registering it. Stop right there!!! You are creating a problem for yourself. &lt;/p&gt;  &lt;p align="justify"&gt;Every time you register a DLL, if its self-registering DLL, will create entries in System’s Registry with its current location, ProgID, CLSID along with other information. This information is used by programs when they are doing late binding to find the DLL and load in memory. &lt;/p&gt;  &lt;p align="justify"&gt;If you move/delete a DLL without unregistering/re-registering the DLL you are leaving with an entry behind in the Registry which is pointing to “Invalid Path”. In this case any program which is using that DLL will fail and you may not realize what’s happening.&lt;/p&gt;  &lt;p align="justify"&gt;As a first step in a “Could not load &amp;lt;Image&amp;gt;/Error loading &amp;lt;Image&amp;gt;” error scenario I would always go to registry and verify that the DLL is registered properly. It could be tedious task and risky as well. You may just edit a registry entry by mistake and break other functionality as well.&lt;/p&gt;  &lt;p align="justify"&gt;I have come up with a VBScript which gives you the ease to quickly verify the Image path &amp;amp; current version on the basic of ProgID or CLSID. This script will prompt you to enter either ProgID or CLSID and give you the desired information. &lt;/p&gt;  &lt;p align="justify"&gt;Here we are looking for PROGID of CDOSYS.DLL&lt;/p&gt;  &lt;p align="justify"&gt;&lt;a href="http://blogs.msdn.com/blogfiles/vikas/WindowsLiveWriter/HOWTOQueryinformationrelatedtoProgIDCLS_9D9/image_2.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/vikas/WindowsLiveWriter/HOWTOQueryinformationrelatedtoProgIDCLS_9D9/image_thumb.png" width="367" height="164" /&gt;&lt;/a&gt;&amp;#160; &lt;/p&gt;  &lt;p align="justify"&gt;…and here are the results.&lt;/p&gt;  &lt;p align="justify"&gt;&lt;a href="http://blogs.msdn.com/blogfiles/vikas/WindowsLiveWriter/HOWTOQueryinformationrelatedtoProgIDCLS_9D9/image_4.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/vikas/WindowsLiveWriter/HOWTOQueryinformationrelatedtoProgIDCLS_9D9/image_thumb_1.png" width="373" height="228" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p align="justify"&gt;Similarly you could use CLSID to do reverse lookup for ProgID &amp;amp; Image Path&lt;/p&gt;  &lt;p align="justify"&gt;&lt;a href="http://blogs.msdn.com/blogfiles/vikas/WindowsLiveWriter/HOWTOQueryinformationrelatedtoProgIDCLS_9D9/image_6.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/vikas/WindowsLiveWriter/HOWTOQueryinformationrelatedtoProgIDCLS_9D9/image_thumb_2.png" width="367" height="164" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p align="justify"&gt;&lt;a href="http://blogs.msdn.com/blogfiles/vikas/WindowsLiveWriter/HOWTOQueryinformationrelatedtoProgIDCLS_9D9/image_8.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/vikas/WindowsLiveWriter/HOWTOQueryinformationrelatedtoProgIDCLS_9D9/image_thumb_3.png" width="421" height="228" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p align="justify"&gt;Here is the code that I used in this script…&lt;/p&gt;  &lt;div&gt;   &lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #0000ff"&gt;On&lt;/span&gt; &lt;span style="color: #0000ff"&gt;Error&lt;/span&gt; &lt;span style="color: #0000ff"&gt;Resume&lt;/span&gt; &lt;span style="color: #0000ff"&gt;Next&lt;/span&gt;

&lt;span style="color: #0000ff"&gt;Dim&lt;/span&gt; strProgId
&lt;span style="color: #0000ff"&gt;Dim&lt;/span&gt; strDescription
&lt;span style="color: #0000ff"&gt;Dim&lt;/span&gt; strCLSID
&lt;span style="color: #0000ff"&gt;Dim&lt;/span&gt; strInProcServer
&lt;span style="color: #0000ff"&gt;Dim&lt;/span&gt; strCurVer
&lt;span style="color: #0000ff"&gt;Dim&lt;/span&gt; strCurVerCLSID
&lt;span style="color: #0000ff"&gt;Dim&lt;/span&gt; strCurVerInProcServer
&lt;span style="color: #0000ff"&gt;Dim&lt;/span&gt; strVersionIndependentProgID

&lt;span style="color: #0000ff"&gt;Dim&lt;/span&gt; oShell
&lt;span style="color: #0000ff"&gt;Set&lt;/span&gt; oShell = CreateObject(&lt;span style="color: #006080"&gt;&amp;quot;WScript.Shell&amp;quot;&lt;/span&gt;)

&lt;span style="color: #0000ff"&gt;Dim&lt;/span&gt; strOutput

strProgId = UCase(Trim(InputBox(&lt;span style="color: #006080"&gt;&amp;quot;Enter the ProgID/CLSID:&amp;quot;&lt;/span&gt;,&lt;span style="color: #006080"&gt;&amp;quot;ProgID Tool&amp;quot;&lt;/span&gt;)))

&lt;span style="color: #0000ff"&gt;If&lt;/span&gt; Len(strProgId)&amp;lt;=0 &lt;span style="color: #0000ff"&gt;Then&lt;/span&gt; 
    Msgbox &lt;span style="color: #006080"&gt;&amp;quot;Invalid ProgID/CLSID&amp;quot;&lt;/span&gt;
&lt;span style="color: #0000ff"&gt;Else&lt;/span&gt;
    
    &lt;span style="color: #0000ff"&gt;If&lt;/span&gt; Left(strProgId,1) = &lt;span style="color: #006080"&gt;&amp;quot;{&amp;quot;&lt;/span&gt; &lt;span style="color: #0000ff"&gt;Then&lt;/span&gt; strProgId = oShell.RegRead(&lt;span style="color: #006080"&gt;&amp;quot;HKEY_CLASSES_ROOT\CLSID\&amp;quot;&lt;/span&gt; &amp;amp; strProgId &amp;amp; &lt;span style="color: #006080"&gt;&amp;quot;\ProgID\&amp;quot;&lt;/span&gt;)
    
    strDescription = oShell.RegRead(&lt;span style="color: #006080"&gt;&amp;quot;HKEY_CLASSES_ROOT\&amp;quot;&lt;/span&gt; &amp;amp; strProgId &amp;amp; &lt;span style="color: #006080"&gt;&amp;quot;\&amp;quot;&lt;/span&gt;)
    strCLSID = oShell.RegRead(&lt;span style="color: #006080"&gt;&amp;quot;HKEY_CLASSES_ROOT\&amp;quot;&lt;/span&gt; &amp;amp; strProgId &amp;amp; &lt;span style="color: #006080"&gt;&amp;quot;\CLSID\&amp;quot;&lt;/span&gt;)
    strCurVer = oShell.RegRead(&lt;span style="color: #006080"&gt;&amp;quot;HKEY_CLASSES_ROOT\&amp;quot;&lt;/span&gt; &amp;amp; strProgId &amp;amp; &lt;span style="color: #006080"&gt;&amp;quot;\CurVer\&amp;quot;&lt;/span&gt;)

    strInProcServer = oShell.RegRead(&lt;span style="color: #006080"&gt;&amp;quot;HKEY_CLASSES_ROOT\CLSID\&amp;quot;&lt;/span&gt; &amp;amp; strCLSID &amp;amp; &lt;span style="color: #006080"&gt;&amp;quot;\InprocServer32\&amp;quot;&lt;/span&gt;)
    strVersionIndependentProgID = oShell.RegRead(&lt;span style="color: #006080"&gt;&amp;quot;HKEY_CLASSES_ROOT\CLSID\&amp;quot;&lt;/span&gt; &amp;amp; strCLSID &amp;amp; &lt;span style="color: #006080"&gt;&amp;quot;\VersionIndependentProgID\&amp;quot;&lt;/span&gt;)
    
    strOutput = strOutput &amp;amp; &lt;span style="color: #006080"&gt;&amp;quot;ProgID: &amp;quot;&lt;/span&gt; &amp;amp; strProgId &amp;amp; vbCrLf
    strOutput = strOutput &amp;amp; &lt;span style="color: #006080"&gt;&amp;quot;Description: &amp;quot;&lt;/span&gt; &amp;amp; strDescription &amp;amp; vbCrLf 
    strOutput = strOutput &amp;amp; &lt;span style="color: #006080"&gt;&amp;quot;Current Version: &amp;quot;&lt;/span&gt; &amp;amp; strCurVer &amp;amp; vbCrLf
    strOutput = strOutput &amp;amp; &lt;span style="color: #006080"&gt;&amp;quot;VersionIndependentProgID: &amp;quot;&lt;/span&gt; &amp;amp; strVersionIndependentProgID &amp;amp; vbCrLf &amp;amp; vbCrLf
    
    strOutput = strOutput &amp;amp; strProgId &amp;amp; &lt;span style="color: #006080"&gt;&amp;quot; CLSID: &amp;quot;&lt;/span&gt; &amp;amp; strCLSID &amp;amp; vbCrLf
    strOutput = strOutput &amp;amp; strProgId &amp;amp; &lt;span style="color: #006080"&gt;&amp;quot; InProcServer: &amp;quot;&lt;/span&gt; &amp;amp; strInProcServer &amp;amp; vbCrLf &amp;amp; vbCrLf
    
    
    &lt;span style="color: #0000ff"&gt;If&lt;/span&gt; (Len(strCurVer)&amp;gt;0) &lt;span style="color: #0000ff"&gt;Then&lt;/span&gt;
        strCurVerCLSID = oShell.RegRead(&lt;span style="color: #006080"&gt;&amp;quot;HKEY_CLASSES_ROOT\&amp;quot;&lt;/span&gt; &amp;amp; strCurVer &amp;amp; &lt;span style="color: #006080"&gt;&amp;quot;\CLSID\&amp;quot;&lt;/span&gt;)
        strCurVerInProcServer = oShell.RegRead(&lt;span style="color: #006080"&gt;&amp;quot;HKEY_CLASSES_ROOT\CLSID\&amp;quot;&lt;/span&gt; &amp;amp; strCurVerCLSID &amp;amp; &lt;span style="color: #006080"&gt;&amp;quot;\InprocServer32\&amp;quot;&lt;/span&gt;)
        
        strOutput = strOutput &amp;amp; strCurVer &amp;amp; &lt;span style="color: #006080"&gt;&amp;quot; CLSID: &amp;quot;&lt;/span&gt; &amp;amp; strCurVerCLSID &amp;amp; vbCrLf
        strOutput = strOutput &amp;amp; strCurVer &amp;amp; &lt;span style="color: #006080"&gt;&amp;quot; InProcServer: &amp;quot;&lt;/span&gt; &amp;amp; strCurVerInProcServer &amp;amp; vbCrLf
    
    &lt;span style="color: #0000ff"&gt;End&lt;/span&gt; &lt;span style="color: #0000ff"&gt;If&lt;/span&gt;
    
    Msgbox strOutput,,&lt;span style="color: #006080"&gt;&amp;quot;ProgId Tool&amp;quot;&lt;/span&gt;
    
&lt;span style="color: #0000ff"&gt;End&lt;/span&gt; &lt;span style="color: #0000ff"&gt;If&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&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=9541138" width="1" height="1"&gt;</content><author><name>Vikas Verma</name><uri>http://blogs.msdn.com/members/Vikas+Verma.aspx</uri></author><category term="CDOEXM" scheme="http://blogs.msdn.com/vikas/archive/tags/CDOEXM/default.aspx" /><category term="CDOEX" scheme="http://blogs.msdn.com/vikas/archive/tags/CDOEX/default.aspx" /><category term="CDO" scheme="http://blogs.msdn.com/vikas/archive/tags/CDO/default.aspx" /><category term="CDOSYS" scheme="http://blogs.msdn.com/vikas/archive/tags/CDOSYS/default.aspx" /><category term="Samples" scheme="http://blogs.msdn.com/vikas/archive/tags/Samples/default.aspx" /><category term="Workarounds" scheme="http://blogs.msdn.com/vikas/archive/tags/Workarounds/default.aspx" /><category term="DevMsgTeam" scheme="http://blogs.msdn.com/vikas/archive/tags/DevMsgTeam/default.aspx" /><category term="Tip Of The Day" scheme="http://blogs.msdn.com/vikas/archive/tags/Tip+Of+The+Day/default.aspx" /><category term="CoolStuff" scheme="http://blogs.msdn.com/vikas/archive/tags/CoolStuff/default.aspx" /><category term="MSXML" scheme="http://blogs.msdn.com/vikas/archive/tags/MSXML/default.aspx" /><category term="VBScript" scheme="http://blogs.msdn.com/vikas/archive/tags/VBScript/default.aspx" /></entry><entry><title>HOWTO: Give Service Account Access to all mailboxes on an Exchange 2007 Server</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/vikas/archive/2009/03/30/howto-give-service-account-access-to-all-mailboxes-on-an-exchange-2007-server.aspx" /><id>http://blogs.msdn.com/vikas/archive/2009/03/30/howto-give-service-account-access-to-all-mailboxes-on-an-exchange-2007-server.aspx</id><published>2009-03-30T23:18:48Z</published><updated>2009-03-30T23:18:48Z</updated><content type="html">&lt;p&gt;This is my first attempt to write a Powershell sample to my readers. In this sample we will give Send-As, Receive-As, ms-Exch-Store-Admin rights to an active directory user. We will be piping two commands here… Get-MailboxServer and the result will go to Add-AdPermission. &lt;/p&gt;  &lt;p&gt;You may give same permissions using Exchange Power Shell Window&lt;/p&gt;  &lt;table border="0" cellspacing="0" cellpadding="2" width="701"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="699"&gt;C:\&amp;gt;Get-MailboxServer –Identity MSGEX07 | Add-AdPermission –User UserA –AccessRights GenericRead, GenericWrite –ExtendedRights Send-As, Receive-As, ms-Exch-Store-Admin&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;Here is the sample…&lt;/p&gt;  &lt;div&gt;   &lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #0000ff"&gt;using&lt;/span&gt; System;
&lt;span style="color: #0000ff"&gt;using&lt;/span&gt; System.Collections.Generic;
&lt;span style="color: #0000ff"&gt;using&lt;/span&gt; System.Text;
&lt;span style="color: #0000ff"&gt;using&lt;/span&gt; System.Management.Automation.Runspaces;
&lt;span style="color: #0000ff"&gt;using&lt;/span&gt; System.Collections.ObjectModel;

&lt;span style="color: #0000ff"&gt;namespace&lt;/span&gt; PowershellSample
{
    &lt;span style="color: #0000ff"&gt;class&lt;/span&gt; Program
    {
        &lt;span style="color: #0000ff"&gt;static&lt;/span&gt; &lt;span style="color: #0000ff"&gt;void&lt;/span&gt; Main(&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;[] args)
        {
            RunspaceConfiguration config = RunspaceConfiguration.Create();
            PSSnapInException warning;

            &lt;span style="color: #008000"&gt;// Load Exchange PowerShell snap-in.&lt;/span&gt;
            config.AddPSSnapIn(&lt;span style="color: #006080"&gt;&amp;quot;Microsoft.Exchange.Management.PowerShell.Admin&amp;quot;&lt;/span&gt;, &lt;span style="color: #0000ff"&gt;out&lt;/span&gt; warning);
            &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (warning != &lt;span style="color: #0000ff"&gt;null&lt;/span&gt;) &lt;span style="color: #0000ff"&gt;throw&lt;/span&gt; warning;


            &lt;span style="color: #0000ff"&gt;using&lt;/span&gt; (Runspace thisRunspace = RunspaceFactory.CreateRunspace(config))
            {
                &lt;span style="color: #0000ff"&gt;try&lt;/span&gt;
                {
                    thisRunspace.Open();
                    &lt;span style="color: #0000ff"&gt;using&lt;/span&gt; (Pipeline thisPipeline = thisRunspace.CreatePipeline())
                    {
                        &lt;span style="color: #008000"&gt;//Please change parameter values.&lt;/span&gt;
                        Command cmdGetMailbox = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; Command(&lt;span style="color: #006080"&gt;&amp;quot;Get-MailboxServer&amp;quot;&lt;/span&gt;);
                        Command cmdAddAdPermission = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; Command(&lt;span style="color: #006080"&gt;&amp;quot;Add-AdPermission&amp;quot;&lt;/span&gt;);

                        cmdGetMailbox.Parameters.Add(&lt;span style="color: #006080"&gt;&amp;quot;Identity&amp;quot;&lt;/span&gt;, &lt;span style="color: #006080"&gt;@&amp;quot;MSGEX07&amp;quot;&lt;/span&gt;);
                        cmdAddAdPermission.Parameters.Add(&lt;span style="color: #006080"&gt;&amp;quot;User&amp;quot;&lt;/span&gt;, &lt;span style="color: #006080"&gt;&amp;quot;UserA&amp;quot;&lt;/span&gt;);
                        cmdAddAdPermission.Parameters.Add(&lt;span style="color: #006080"&gt;&amp;quot;AccessRights&amp;quot;&lt;/span&gt;, &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; &lt;span style="color: #0000ff"&gt;string&lt;/span&gt;[] { &lt;span style="color: #006080"&gt;&amp;quot;GenericRead&amp;quot;&lt;/span&gt;, &lt;span style="color: #006080"&gt;&amp;quot;GenericWrite&amp;quot;&lt;/span&gt; });
                        cmdAddAdPermission.Parameters.Add(&lt;span style="color: #006080"&gt;&amp;quot;ExtendedRights&amp;quot;&lt;/span&gt;, &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; &lt;span style="color: #0000ff"&gt;string&lt;/span&gt;[] { &lt;span style="color: #006080"&gt;&amp;quot;Send-As&amp;quot;&lt;/span&gt;, &lt;span style="color: #006080"&gt;&amp;quot;Receive-As&amp;quot;&lt;/span&gt;, &lt;span style="color: #006080"&gt;&amp;quot;ms-Exch-Store-Admin&amp;quot;&lt;/span&gt; });

                        thisPipeline.Commands.Add(cmdGetMailbox);
                        thisPipeline.Commands.Add(cmdAddAdPermission);

                        &lt;span style="color: #0000ff"&gt;try&lt;/span&gt;
                        {
                            thisPipeline.Invoke();
                        }
                        &lt;span style="color: #0000ff"&gt;catch&lt;/span&gt; (Exception exx)
                        {
                            Console.Write(&lt;span style="color: #006080"&gt;&amp;quot;Error: &amp;quot;&lt;/span&gt; + exx.ToString());
                        }

                        &lt;span style="color: #008000"&gt;// Check for errors in the pipeline and throw an exception if necessary.&lt;/span&gt;
                        &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (thisPipeline.Error != &lt;span style="color: #0000ff"&gt;null&lt;/span&gt; &amp;amp;&amp;amp; thisPipeline.Error.Count &amp;gt; 0)
                        {
                            StringBuilder pipelineError = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; StringBuilder();
                            pipelineError.AppendFormat(&lt;span style="color: #006080"&gt;&amp;quot;Error calling cmdLets...&amp;quot;&lt;/span&gt;);
                            &lt;span style="color: #0000ff"&gt;foreach&lt;/span&gt; (&lt;span style="color: #0000ff"&gt;object&lt;/span&gt; item &lt;span style="color: #0000ff"&gt;in&lt;/span&gt; thisPipeline.Error.ReadToEnd())
                            {
                                pipelineError.AppendFormat(&lt;span style="color: #006080"&gt;&amp;quot;{0}\n&amp;quot;&lt;/span&gt;, item.ToString());
                            }

                            &lt;span style="color: #0000ff"&gt;throw&lt;/span&gt; &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; Exception(pipelineError.ToString());
                        }
                    }
                }

                &lt;span style="color: #0000ff"&gt;finally&lt;/span&gt;
                {
                    thisRunspace.Close();
                }

            }
        }
    }
}&lt;/pre&gt;
&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9520162" width="1" height="1"&gt;</content><author><name>Vikas Verma</name><uri>http://blogs.msdn.com/members/Vikas+Verma.aspx</uri></author><category term="Exchange 2007" scheme="http://blogs.msdn.com/vikas/archive/tags/Exchange+2007/default.aspx" /><category term="CmdLet" scheme="http://blogs.msdn.com/vikas/archive/tags/CmdLet/default.aspx" /><category term="HOWTO" scheme="http://blogs.msdn.com/vikas/archive/tags/HOWTO/default.aspx" /><category term="Powershell" scheme="http://blogs.msdn.com/vikas/archive/tags/Powershell/default.aspx" /><category term="Samples" scheme="http://blogs.msdn.com/vikas/archive/tags/Samples/default.aspx" /><category term="DevMsgTeam" scheme="http://blogs.msdn.com/vikas/archive/tags/DevMsgTeam/default.aspx" /><category term="Add-AdPermission" scheme="http://blogs.msdn.com/vikas/archive/tags/Add-AdPermission/default.aspx" /><category term="PSSnapInException" scheme="http://blogs.msdn.com/vikas/archive/tags/PSSnapInException/default.aspx" /><category term="CreatePipeline" scheme="http://blogs.msdn.com/vikas/archive/tags/CreatePipeline/default.aspx" /><category term="StringBuilder" scheme="http://blogs.msdn.com/vikas/archive/tags/StringBuilder/default.aspx" /><category term="CreateRunspace" scheme="http://blogs.msdn.com/vikas/archive/tags/CreateRunspace/default.aspx" /><category term="Get-MailboxServer" scheme="http://blogs.msdn.com/vikas/archive/tags/Get-MailboxServer/default.aspx" /></entry><entry><title>Exchange 2007 SDK on Windows Server 2008, is it supported? YES it is!!!</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/vikas/archive/2009/03/17/exchange-2007-sdk-on-windows-server-2008-is-it-supported.aspx" /><id>http://blogs.msdn.com/vikas/archive/2009/03/17/exchange-2007-sdk-on-windows-server-2008-is-it-supported.aspx</id><published>2009-03-17T17:02:06Z</published><updated>2009-03-17T17:02:06Z</updated><content type="html">&lt;p&gt;I have seen lots of confusion lately and people asking this question in various forums. I do not have an official statement yet on this and waiting for a response from Exchange SDK documentation owners. &lt;/p&gt;  &lt;p&gt;Here is my understanding, I may be wrong here.&lt;/p&gt;  &lt;p&gt;According to &lt;a href="http://www.microsoft.com/downloadS/details.aspx?familyid=47720D33-FA5A-4AF4-A8EB-FA39695CBAD1&amp;amp;displaylang=en"&gt;http://www.microsoft.com/downloadS/details.aspx?familyid=47720D33-FA5A-4AF4-A8EB-FA39695CBAD1&amp;amp;displaylang=en&lt;/a&gt;, the Exchange 2007 SP1 SDK does not list Windows 2008 as supported platform. &lt;/p&gt;  &lt;p&gt;It does not says it’s NOT supported but it also does not mention that whether its supported or not. Usually something which is NOT documented as “not supported” is assumed to be supported :-) &lt;/p&gt;  &lt;p&gt;Let’s take an example of “Exchange 2007 SP1” - &lt;a href="http://www.microsoft.com/downloads/details.aspx?displaylang=en&amp;amp;FamilyID=44c66ad6-f185-4a1d-a9ab-473c1188954c"&gt;http://www.microsoft.com/downloads/details.aspx?displaylang=en&amp;amp;FamilyID=44c66ad6-f185-4a1d-a9ab-473c1188954c&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;The download page does not mention that it’s supported on Windows 2008 while it is the only version of Exchange so far which is supported on Windows 2008&lt;/p&gt;  &lt;p&gt;Source: &lt;a href="http://technet.microsoft.com/en-us/library/bb232170.aspx"&gt;http://technet.microsoft.com/en-us/library/bb232170.aspx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;em&gt;Exchange 2007 and Windows Server 2008 &lt;/em&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;The RTM version of Exchange 2007 cannot be installed on Windows Server 2008. However, Exchange 2007 SP1 is supported for installation on Windows Server 2008. Although you cannot install the RTM version of Exchange 2007 on Windows Server 2008, the RTM version of Exchange 2007 will be supported for use with Windows Server 2008 directory servers.&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;Exchange Server 2003 Service Pack 2 (SP2) is similarly supported. Exchange Server 2003 cannot be installed on a computer running Windows Server 2008, but Exchange 2003 will be supported for use with Windows Server 2008 directory servers.&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;Be aware of the following when combining Microsoft Exchange with Windows Server 2008:&lt;/em&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;em&gt;Exchange 2007 RTM and all previous versions of Microsoft Exchange are not supported for installation on a computer running Windows Server 2008.&lt;/em&gt; &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;&lt;em&gt;Exchange 2007 SP1 can be installed on a computer running Windows Server 2008.&lt;/em&gt;&lt;/strong&gt; &lt;/li&gt;    &lt;li&gt;&lt;em&gt;Management tools for Exchange 2007 RTM and all previous versions of Microsoft Exchange are not supported for installation on a computer running Windows Server 2008 or Windows Vista.&lt;/em&gt; &lt;/li&gt;    &lt;li&gt;&lt;em&gt;&lt;strong&gt;Management tools for Exchange 2007 SP1 can be installed on a computer running Windows Server 2008 or Windows Vista&lt;/strong&gt;.&lt;/em&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;With all that into consideration, it is safe to assume that if you are running with Exchange Sp1 Management Tools on a Windows 2008 machine you are under support boundaries to install and use SDK. I will update this document once I have more information along with facts &amp;amp; confirmation from documentation team.&lt;/p&gt;  &lt;p&gt;&lt;em&gt;Stay tuned…&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;EDIT: UPDATED ON 3/18/2009&lt;/p&gt;  &lt;p&gt;I have got confirmation from product group that its a document bug and nothing more or less. So we DO support Exchange 2007 SP1 SDK on Windows Server 2008.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9483680" width="1" height="1"&gt;</content><author><name>Vikas Verma</name><uri>http://blogs.msdn.com/members/Vikas+Verma.aspx</uri></author></entry></feed>