Le Café Central de Deva
... Deva blogs!!
I changed the way of blogging, developing, designing and assisting my customers. Re-designed the site and started using the latest Windows Live Writer!! Additionally added Microsoft Translator gadget available @ top of page, so that you can change the page in your preferred language!!
You can get the MAPI reference for Outlook 2010 using MSDN: http://msdn.microsoft.com/en-us/library/cc765775(office.14).aspx
MAPI for Outlook 2010 provides a set of interfaces, functions, and other data types to facilitate the development of Outlook 2010 messaging applications. Applications and transports use MAPI to manipulate e-mail data, to create e-mail messages and the folders to store them in, and to support notifications of changes to existing MAPI-related data.
Something related, that if you’re interested and want to try to use…
Have you tried copying all Outlook Calendar items from one folder to another? What is the result that you got?
In Microsoft Office Outlook 2007, Outlook 2003, Outlook 2002, and Outlook 2000, you cannot copy all the items in a Calendar folder when you right-click the folder, you click Copy Calendar, and then you paste in another top-level folder. Instead, this method creates a new subfolder under the destination folder.
To copy all of the items from a Calendar folder to another folder, you must select each item and then copy and paste it to the target folder.
Please refer the KB, so that you can get some alternate ways to do this.
With continuation of my previous article, it just points out to find how we can get by using UI(User Interface like snap-in, MMC Console, ESM..etc)’s.
This time, let me try something different with Exchange Server 2007 (i tried with Exchange Server 2007 SP1 RUx) with its powershell/cmdlet. In order to get the version number, i tried like this to obtain the attributes of the server,
> Get-ExchangeServer | Select ExchangeVersion, AdminDisplayVersion
This provides the ExchangeVersion and AdminDisplayVersion respectively. Hope this helps.
Determine version number of Exchange: To determine the version number, the build number, and the service pack level of a Microsoft Exchange Server computer, check the following properties of the server.
If you have Exchange Server 4.0, Exchange Server 5.0, or Exchange Server 5.5 then you can, follow these steps:
Build numbers and version numbers of the Exchange Server: Each version of Microsoft Exchange Server has a different build number. The following table lists the build numbers and general release dates for each version.
Microsoft Exchange Server 4.0
Microsoft Exchange Server 4.0 (a)
Microsoft Exchange Server 4.0 SP1
Microsoft Exchange Server 4.0 SP2
Microsoft Exchange Server 4.0 SP3
Microsoft Exchange Server 4.0 SP4
Microsoft Exchange Server 4.0 SP5
Microsoft Exchange Server 5.0
Microsoft Exchange Server 5.0 SP1
Microsoft Exchange Server 5.0 SP2
Microsoft Exchange Server 5.5
Microsoft Exchange Server 5.5 SP1
Microsoft Exchange Server 5.5 SP2
Microsoft Exchange Server 5.5 SP3
Microsoft Exchange Server 5.5 SP4
Microsoft Exchange 2000 Server
Microsoft Exchange 2000 Server (a)
Microsoft Exchange 2000 Server SP1
Microsoft Exchange 2000 Server SP2
Microsoft Exchange 2000 Server SP3
Microsoft Exchange 2000 Server post-SP3
Microsoft Exchange Server 2003
Microsoft Exchange Server 2003 SP1
Microsoft Exchange Server 2003 SP2
Microsoft Exchange Server 2003 post-SP2
Microsoft Exchange Server 2007
8.0.685.24 or 8.0.685.25
Microsoft Exchange Server 2007 SP1
Some time earlier, Windows 7 Has Been Released to Manufacturing. You can get a detailed information that’s available in the Official Windows Blog by Brandon-LeBlanc.
Also i found the Microsoft Press pass release info…
More information about today’s news is available via the following links:
•Windows Team Blog
•Windows Server Blog
•Partner Web sites, http://readyset7.com and http://talkingaboutwindows.com/Default.aspx
•Windows 7 and Windows Server 2008 R2 for businesses
Hope this helps!!
With continuation of my previous–related blog post, I got this task to find out the way how to identify the existing categories and updating/adding new categories in Outlook 2007 using Outlook Object Model programmatically.
I tried the following to find whether the category exists or not:
Public Function CategoryExists(categoryName As String) As Boolean
Dim category As Outlook.category
Set category = Application.Session.categories(categoryName)
If Not (category Is Nothing) Then
CategoryExists = True
CategoryExists = False
Then, implement your programming logic, whatever you want to try (update/adding new categories) using OOM. I tried something like this for the category “Cat1” – enclosed the code snippet for your view (code snippet just shows how you can try, not exact implementation):
Private Sub AddACategory()
Dim categories As Outlook.categories
Set categories = Application.Session.categories
If Not CategoryExists("Cat1") Then
Dim categorynew As Outlook.category
Set categorynew = categories.Add("Cat1", Outlook.OlCategoryColor.olCategoryColorPurple,
Dim gotcategory As Outlook.category
Set gotcategorynew = categories.Add("Cat1", Outlook.OlCategoryColor.olCategoryColorDarkGreen, _Outlook.OlCategoryShortcutKey.olCategoryShortcutKeyCtrlF11)
While working with one of my customer we noticed that the yearly recurring appointment doesn’t show in Outlook Web Access or Exchange Web Services(EWS) application.
Customer created a monthly or yearly recurring appointment. He set the request to occur on the second, third, or fourth weekday of a month. But, whenever we use Outlook Web Access (OWA) client or customer’s Exchange Web Service (EWS) application to view this request, the request is set to occur on the first weekday of the month; but strangely, the Outlook 2007 client displays the appointment correctly. When we do the troubleshooting, this happens for Exchange Server 2007 SP1 Roll up 4.
We recommended customer to install the latest service pack (during the time it was Update Rollup 7), which resolved the issue.
static void Main(string args)
string strRootURI = "http://server/exchange/username/Inbox/"; // Provide the valid URI
string strUserName = "UserName";
string strPassword = "Password";
string strDomain = "Domain";
string strQuery ="";
byte bytes = null;
System.IO.Stream RequestStream = null;
System.IO.Stream ResponseStream = null;
System.Xml.XmlTextReader XmlReader = null;
// Build the SQL query.
strQuery = "<?xml version=\"1.0\"?><D:searchrequest xmlns:D = \"DAV:\" >";
strQuery += "<D:sql>SELECT \"DAV:href\" FROM scope('hierarchical traversal of \"";
strQuery += strRootURI + "\"')</D:sql></D:searchrequest>";
// Create a new CredentialCache object and fill it with the network credentials required to access the server.
MyCredentialCache = new System.Net.CredentialCache();
MyCredentialCache.Add( new System.Uri(strRootURI),
new System.Net.NetworkCredential(strUserName, strPassword, strDomain)
// Create the HttpWebRequest object.
Request = (System.Net.HttpWebRequest)HttpWebRequest.Create(strRootURI);
// Add the network credentials to the request.
Request.Credentials = MyCredentialCache;
// Specify the method.
Request.Method = "SEARCH";
// Encode the body using UTF-8.
bytes = Encoding.UTF8.GetBytes((string)strQuery);
// Set the content header length. This must be
// done before writing data to the request stream.
Request.ContentLength = bytes.Length;
// Get a reference to the request stream.
RequestStream = Request.GetRequestStream();
// Write the SQL query to the request stream.
RequestStream.Write(bytes, 0, bytes.Length);
// Close the Stream object to release the connection
// for further use.
// Set the content type header.
Request.ContentType = "text/xml";
// Send the SEARCH method request and get the
// response from the server.
Response = (HttpWebResponse)Request.GetResponse();
// Get the XML response stream.
ResponseStream = Response.GetResponseStream();
// Create the XmlTextReader object from the XML
// response stream.
XmlReader = new XmlTextReader(ResponseStream);
// Read through the XML response, node by node.
// Look for the opening DAV:href node. The DAV: namespace is
//typically assigned the a: prefix in the XML response body.
if(XmlReader.Name == "a:href")
// Advance the reader to the text node.
// Display the value of the DAV:href text node.
Console.WriteLine("Value: " + XmlReader.Value);
//Advance the reader to the closing DAV:href node.
// Clean up.
// Catch any exceptions. Any error codes from the SEARCH method request
Hope this helps.
The Microsoft Exchange Server 2010 Protocol technical documentation set provides detailed technical specifications for Microsoft protocols and extensions to industry-standards or other published protocols that are implemented and used in Microsoft Exchange Server 2010.
This allows the user to interoperate or communicate natively with Microsoft Office client and other server products. The documentation is designed to describe each protocol in detail as it is used by the Microsoft Exchange Server. Each protocol specification documents the technical requirements, limitations, dependencies, and Microsoft-specific protocol behavior. The documentation set includes a set of companion overview and reference documents that supplement the technical specifications with conceptual background, overviews of inter-protocol relationships and interactions, and technical reference information.
You can download it from: Microsoft Download Center
On 7/17/2009, Microsoft released Update Rollup 9 for Exchange Server 2007 Service Pack 1. This update Rollup 9 for Exchange Server 2007 Service Pack 1 (SP1) resolves issues that were found in Exchange Server 2007 SP1 since the software was released. This update rollup is highly recommended for all Exchange Server 2007 SP1 customers.
This update rollup does not apply to Exchange Server 2007 Release To Manufacturing (RTM). For a list of update rollups applicable to Exchange Server 2007 RTM, refer to the section Update rollups for Exchange Server 2007 RTM in the Knowledge Base article KB937052. This is a cumulative update rollup and replaces the following:
The following file is available for download from the Microsoft Download Center: Download the Exchange2007-KB970162-EN package now.
For a list of changes that are included in this update rollup, refer KB970162.
If you’ve been in the development world for any length of time you’ve probably ended up in a situation like one of the following more than a few times .
· You’ve received reports of a crash from a tester, but on your local box you can’t get the bug to reproduce.
· You’ve received a crash dump from the tester along with the bug. But the call stack that actually caused the crash was just a cascading effect and you can’t trace the bug back to the root issue.
· The bug that you are currently working at resolving has an extremely long set of reproduction steps and you just accidentally stepped over the function that is returning bad data.
· You know that some part of your program is hitting the registry way too often, but while stepping through all that you see are .Net framework calls and you are unable to isolate which of them is doing all the extra registry work.
With Visual Studio 2010 Team System Editions we have something new, Historical Debugger, which is aimed at getting rid of these developer pain points.
The Historical Debugger plays a role similar to that of a black box in a plane . We keep track of important points in your programs execution and allow you to play back what happened at those points at a later time. We’re very proud of the current experience that we offer with the Visual Studio debugger so we’ve worked hard to surface all this new historical data in a way that is both useful and consistent with what you would expect from debugging in Visual Studio.
Happy programming & debugging. Hope this helps.
I created this code snippet, which helps us to mail-disable in the Exchange Server 2003 SP2 (Native mode) – public folders. For this i tried this, i used C#.Net & CDOEXM. In this below code, i try to mail-disable the public folder named “publicfolder1”. I used Visual Studio.Net 2008, C#.Net and CDOEXM – Collaboration Data Objects for Exchange Management – 2003 to do this:
static void Main(string args)
CDO.Folder objFolder = new CDO.Folder();
fullurl = "http://domain/public/publicfolder1";
objRecip = (CDOEXM.IMailRecipient)objFolder;
catch (Exception e1)
+ To execute this code, you may try with VS.Net 2005 or VS.Net 2008, C#.Net.
+ Make sure you need to use the following references: CDOEXM – Microsoft CDO for Exchange Management 2000 & CDOEX - Microsoft CDO for Exchange 2000.
+ This code helps us to mail-disable the public folder “public folder1”.
+ Also we need to make sure to pass valid credentials username(Administrator) & password(Password) to execute this, along with valid fullURL – the public folder needs to be mail-disabled & domain – exchange domain.
Hope this helps. Happy programming!!
Hey, i found this webcast, which can help us to use the Outlook 2007 categories and flags.
During this Support WebCast we will provide information about Microsoft Office Outlook 2007. Specifically, we will provide the following information:
This is a Level 100 (http://support.microsoft.com/default.aspx?scid=gp;en-us;webcastlevels&sd=gn) session that was recorded Wednesday, 25 April 2007 and presented by Audey Teeter. Audey Teeter is a graduate of the Middle Tennessee State University at Murfreesboro, TN, where he received a Bachelor of Science degree. He has worked for Microsoft for more than six years. Audey started out as a support engineer for Microsoft Office Setup and later Microsoft Word. He has progressed through the roles of mentor and partner technical lead, and has also been a beta engineer for Office 2003 Common Components. Audey is a Partner Technical Lead for Office Setup, Outlook, Business Contact Manager, and Outlook Express. He is currently involved in the Microsoft Office 12 beta.
Viewing the Presentation
To view, please click on the link: View this Support WebCast (https://www.livemeeting.com/cc/msevents/view?id=wc042507) (Length: 1 hour 0 minutes) This Windows Streaming Media archive requires an Internet connection of 56 Kbps or faster, and is best viewed with a minimum screen resolution of 800 X 600.
Offline viewing download (http://download.microsoft.com/download/a/d/1/ad1af678-2742-4bec-85a6-388c54e30f20/wc042507.wmv.zip ) - If you wish to download a copy of this broadcast to your local hard drive for off-line viewing, we provide this as a separate file (self-extracting .exe) that you can download. Podcasting/Mobile Resources
Audio-Only Stream (.WMA format) (http://download.microsoft.com/download/a/d/1/ad1af678-2742-4bec-85a6-388c54e30f20/wc042507.wma.zip ) - Click this link if you wish to listen to an audio-only version of this broadcast in WMA (Windows Media Audio) streaming format.
Audio-Only Stream (.MP3 format) (http://download.microsoft.com/download/a/d/1/ad1af678-2742-4bec-85a6-388c54e30f20/wc042507.mp3.zip ) - Click this link if you wish to listen to an audio-only version of this broadcast in MP3 (MPEG Audio) format. Additional Resources
Download the presentation (http://download.microsoft.com/download/a/d/1/ad1af678-2742-4bec-85a6-388c54e30f20/wc042507.zip ) - This is a Microsoft PowerPoint (.ppt) file. If you do not have PowerPoint and you want a copy of the slides, please use the PowerPoint Viewer (http://www.microsoft.com/downloads/details.aspx?FamilyID=428d5727-43ab-4f24-90b7-a94784af71a4&DisplayLang=en) (1,911 KB).
Read the Transcript from this event (http://download.microsoft.com/download/a/d/1/ad1af678-2742-4bec-85a6-388c54e30f20/wct042507.zip )