Le Café Central de

                    ... Deva blogs!!

  • Le Café Central de DeVa

    Download: Outlook 2007 Add-ins & code samples


    Whenever we discuss with regards to Outlook Add-in customization, many of our customer(s) or their developers want to customize it according to their requirements. Also they look for the code-samples, related articles to proceed further. In this discussion, i have added couple of Outlook 2007 specific add-ins, code samples along with their download links.

    Please download the following Outlook add-ins along with the code-samples:

    Outlook 2007 Add-Ins: RulesAddin, TravelAgencyAddin, and PrepareMeAddin
    Download: http://www.microsoft.com/downloads/details.aspx?FamilyId=F871C923-3C42-485D-83C7-10A54A92E8A2&displaylang=en

    Please note: The Outlook 2007 Sample Add-Ins are a learning tool that will help you understand some of the important new features in the Outlook 2007 object model. Each sample is available in a version for Visual Studio 2005 Tools for Office Second Edition (VSTO 2005 SE) in addition to the version based on the Outlook 2007 Sample: Visual Studio 2005 Templates.

    They provide coverage of the following important new areas:

    • Using the Rules object model, which allows you to programmatically create or access most rules supported by the Outlook Rules Wizard (Rules sample)
    • Implementing a form region for an Outlook contact item (Travel Agency sample)
    • Adding a custom task pane to an Outlook AppointmentItem (Prepare Me sample)
    Outlook 2007 Sample: Ribbon Extensibility Add-In
    Download: http://www.microsoft.com/downloads/details.aspx?FamilyID=11ab93bf-48dc-4f73-8f6b-62b4482a92bc&displaylang=en

    Please note: The Outlook 2007 Ribbon Extensibility Add-In is a learning tool that will help you understand how to customize the Ribbon for Outlook Inspector windows. It provides coverage of the following important new areas:

    • How legacy command bar customizations appear in an Outlook Inspector window
    • How to implement the Office.IRibbonExtensibility interface in an Outlook add-in
    • Providing Ribbon markup for Ribbon customization depending on the RibbonID string passed in the GetCustomUI callback
    • Using the IRibbonControl.Context object to find an instance of an Inspector object
    • Changing the state of Ribbon controls depending on the PropertyChange event for an Outlook item.
    Outlook 2007 Sample: Visual Studio 2005 Templates
    Download: http://www.microsoft.com/downloads/details.aspx?familyid=0cab159a-0272-4635-b158-10553779a3df&displaylang=en

    Please note: The Outlook 2007 Add-in Templates provide a basic template for developing Outlook 2007 add-ins using Visual Studio 2005. The templates are available in both Visual Basic and Visual C# languages. Each template includes the OutlookItem class, which enables developers to work with generic Outlook items through late-binding, without determining the item type first.

    The templates also include wrapper classes that enable you to track multiple Outlook Inspector or Explorer windows. The templates provide an alternative to the Outlook add-in templates available with Microsoft Visual Studio 2005 Tools for the 2007 Office system (VSTO 2005 Second Edition). VSTO 2005 SE is the preferred tool for developing add-ins for Outlook 2007. If you choose to build your add-in by using the Outlook 2007 Add-In Templates, you must add a COM Shim project and a Setup project to your add-in solution.

    Outlook 2007 Add-In: Form Region Add-In
    Download: http://www.microsoft.com/downloads/details.aspx?familyid=932b830f-bf8f-41fc-9962-07a741b21586&displaylang=en

    Please note: The Outlook 2007 Form Region Add-ins are a learning tool that will help you understand how to design, build, and run custom form solutions based on Outlook form regions. They provide coverage of the following important new areas:

    • Tracking the state of a form region across multiple windows
    • Implementing the FormRegionStartup interface in an Outlook add-in
    • Understanding the form region manifest XML
    • Registering a form region with Outlook
    • Storing form components as a project resource
    • Deploying a form region solution
    Outlook 2007 Sample: What's New Add-Ins
    Download: http://www.microsoft.com/downloads/details.aspx?FamilyId=AABF127D-D069-4549-A1B1-667A698C3EF6&displaylang=en

    Please note: The Outlook 2007 What's New Add-Ins are a learning tool that will help you understand some of the important new features in the Outlook 2007 object model. They provide coverage of the following important new areas:

    • Context menu customization
    • The Table object model and Instant Search queries
    • The PropertyAccessor object that allows getting or setting properties that are not explicitly exposed in the Outlook object model
    • The Rules object model that allows programmatically creating or accessing most rules supported by the Outlook Rules Wizard
    • The SelectNamesDialog object that displays the Outlook Address Book and lets you customize the dialog caption and recipient selectors
    • Enhancements to the AddressEntry and AddressList objects, including the ExchangeUser and ExchangeDistributionList objects that allow getting and setting properties of an Exchange user or Exchange distribution list.
  • Le Café Central de DeVa

    Migration: Exchange Public folders and its future


    Public Folders are used in earlier versions of Microsoft Exchange Server to store free/busy data and files. From Microsoft Exchange Server 2007, free/busy data is no longer stored in public folders. It’s recommend that you do not store files in public folders in Exchange 2007. Instead, consider using Microsoft Office SharePoint, or Windows SharePoint Services. Public folders are included and supported in Exchange 2007 and 2010. However, future releases of Microsoft Exchange might not include public folders. You can visit http://blogs.technet.com/b/exchange/archive/2006/02/20/419994.aspx. Also, you can refer MS Exchange team blog have posted the updated public folder guidance for versions of Exchange past Exchange 2007.

    So, what are my options?

    If you're building something new, you should look at the requirements and building on the SharePoint Technologies platform:

    + Starting with Exchange 2007, we recommend that applications use the Availability service to provide free/busy data for Exchange mailbox users. Windows SharePoint Services replaces the file sharing functionality that public folders provide. You must redesign applications that use public folders to use Exchange Web Services.
    + Also consider redesigning custom applications as early as possible as future versions of Microsoft Exchange may not contain public folders.
    + In addition to that you can refer the wonderful blogpost by Joel.

  • Le Café Central de DeVa

    Adding delegates in Exchange Web Services (Exchange Server 2007 SP1)


    Delegates & Exchange Web Services 

    In Microsoft Exchange Server 2007 SP1, you can use Exchange Web Services to add, update, and remove delegates.

    Code sample

    Please find the code example that shows you how to add delegates that can take actions on behalf of a principal. In this code it shows how to add two delegate users to an account.

    static void AddDelegate()
        // Set the version, credentials, and Client Access server on ExchangeServiceBinding.
        ExchangeServiceBinding esb = new ExchangeServiceBinding();
        esb.RequestServerVersionValue = new RequestServerVersion();
        esb.RequestServerVersionValue.Version = ExchangeVersionType.Exchange2007_SP1;
        esb.Credentials = new NetworkCredential("username", "password", "domain");
        esb.Url = "https://example.com/ews/exchange.asmx";

        // Create the request.
        AddDelegateType request = new AddDelegateType();

        // Identify the principal's mailbox.
        request.Mailbox = new EmailAddressType();
        request.Mailbox.EmailAddress = "user1@example.com";

        // Identify the delegates who are given access to the principal's mailbox.
        request.DelegateUsers = new DelegateUserType[2];
        request.DelegateUsers[0] = new DelegateUserType();
        request.DelegateUsers[0].UserId = new UserIdType();
        request.DelegateUsers[0].UserId.PrimarySmtpAddress = "user2@example.com";
        request.DelegateUsers[1] = new DelegateUserType();
        request.DelegateUsers[1].UserId = new UserIdType();
        request.DelegateUsers[1].UserId.PrimarySmtpAddress = "user3@example.com";
        // Specify the permissions that are granted to each delegate.
        request.DelegateUsers[0].DelegatePermissions = new DelegatePermissionsType();
        request.DelegateUsers[0].DelegatePermissions.CalendarFolderPermissionLevel = DelegateFolderPermissionLevelType.Reviewer;
        request.DelegateUsers[0].DelegatePermissions.CalendarFolderPermissionLevelSpecified = true;
        request.DelegateUsers[1].DelegatePermissions = new DelegatePermissionsType();
        request.DelegateUsers[1].DelegatePermissions.TasksFolderPermissionLevel = DelegateFolderPermissionLevelType.Author;
        request.DelegateUsers[1].DelegatePermissions.TasksFolderPermissionLevelSpecified = true;
        request.DelegateUsers[1].DelegatePermissions.InboxFolderPermissionLevel = DelegateFolderPermissionLevelType.Editor;
        request.DelegateUsers[1].DelegatePermissions.InboxFolderPermissionLevelSpecified = true;

        // Specify whether the principal recieves meeting requests.
        request.DeliverMeetingRequests = DeliverMeetingRequestsType.DelegatesAndSendInformationToMe;
        request.DeliverMeetingRequestsSpecified = true;

            // Send the request and get the response.
            AddDelegateResponseMessageType response = esb.AddDelegate(request);
            DelegateUserResponseMessageType[] responseMessages = response.ResponseMessages;

            // One DelegateUserResponseMessageType exists for each attempt to add a delegate user to an account.
            foreach (DelegateUserResponseMessageType user in responseMessages)
                Console.WriteLine("Results of adding user: " + user.ResponseClass.ToString());
                if (user.DelegateUser.ReceiveCopiesOfMeetingMessagesSpecified)
                    Console.WriteLine("Does the delegate receive copies of meeting related messages: " + user.DelegateUser.ReceiveCopiesOfMeetingMessages);
                if (user.DelegateUser.ViewPrivateItemsSpecified)
                    Console.WriteLine("Can the delegate view private items in the principal's mailbox: " + user.DelegateUser.ViewPrivateItems);
        catch (Exception e)

    For more information refer this article

  • Le Café Central de DeVa

    OOM : How to retrieve Outlook attachments ( Reference, Value, Embedded and OLE) using VBA?


    Please find the following code snippet for retrieving various Outlook attachments  - Reference, Value, Embedded and OLE using Outlook Object Model (OOM) & VBA:

    'Code Snippet : How to retrieve Outlook attachments using Visual Basic for Application (VBA)
    Dim omailitem As Outlook.MailItem
    Dim oattach As Outlook.Attachment
    Dim ofolder As Outlook.Folder
    Set ofolder = Application.Session.PickFolder
    Debug.Print "Total Items available in Folder : " & ofolder.Items.Count
    For Each Item In ofolder.Items
    Set omailitem = Item
    Debug.Print "Item Subject :" & omailitem.Subject & " Size (in bytes):" & omailitem.Size
    If omailitem.Attachments.Count > 0 Then
    For Each oattach In omailitem.Attachments
    If oattach.Type = Outlook.olByReference Then
    Debug.Print "By reference : " & oattach.FileName & " Size (in bytes) : " & oattach.Size
    ElseIf oattach.Type = Outlook.olByValue Then
    Debug.Print "By Value : " & oattach.FileName & " Size (in bytes) : " & oattach.Size
    ElseIf oattach.Type = Outlook.olEmbeddeditem Then
    Debug.Print "Embedded item : " & oattach.FileName & " Size (in bytes) : " & oattach.Size
    ElseIf oattach.Type = Outlook.olOLE Then
    Debug.Print "OLE : " & oattach.FileName & " Size (in bytes) :" & oattach.Size
    End If
    Debug.Print "-------------------"
    End If

    - olByReference The attachment is a shortcut to the location of the original file.
    - olByValue The attachment is a copy of the original file and can be accessed even if the original file is removed.
    - olEmbeddeditem The attachment is an Outlook message format file (.msg) and is a copy of the original message.
    - olOLE The attachment is an OLE document

    You can also get more info from : http://msdn.microsoft.com/en-us/library/aa220737(office.11).aspx

    Result will be like this (sample data provided for your view):

    Total Items available in Folder : 3
    Item Subject :Fw: Mormons and Roses - A "Cheers" TV Show ClipSize (in bytes):4057344
    By Value : Mormonscantsendflowers_1.wmvSize (in bytes) : 4054264
    Item Subject :Rate spectrum on exotic position JEX and JNKSize (in bytes):2537614
    By Value : JNK_JEX_IR.xls Size (in bytes) : 2525885
    Item Subject :Fw: Blue Angles in San Francisco(May be a repeat)Size (in bytes):741293
    By Value : image001.jpg Size (in bytes) : 61862
    By Value : image002.jpg Size (in bytes) : 59804
    By Value : image003.jpg Size (in bytes) : 81551
    By Value : image004.jpg Size (in bytes) : 48063
    By Value : image005.jpg Size (in bytes) : 62174
    By Value : image006.jpg Size (in bytes) : 55008
    By Value : image007.jpg Size (in bytes) : 76879
    By Value : image008.jpg Size (in bytes) : 42201
    By Value : image009.jpg Size (in bytes) : 45637
    By Value : image010.jpg Size (in bytes) : 56987
    By Value : image011.jpg Size (in bytes) : 2308
    By Value : image012.jpg Size (in bytes) : 97229
    By Value : image013.jpg Size (in bytes) : 28169

  • Le Café Central de DeVa

    Download: EWS Managed API 1.1


    If you use EWS (Exchange Web Services) Managed API 1.0 or 1.1 beta, then its time for downloading its latest update: EWS Managed API 1.1 (Version 14.02.0051.000)

    The Microsoft Exchange Web Services (EWS) Managed API 1.1 provides a managed interface for developing client applications that use Exchange Web Services. The EWS Managed API simplifies the implementation of applications that communicate with Microsoft Exchange Server 2007 Service Pack 1 (SP1) and later versions of Microsoft Exchange. Built on the Exchange Web Services SOAP protocol and Autodiscover, the EWS Managed API provides a .NET interface to EWS that is easy to learn, use, and maintain.

    You can download it from http://www.microsoft.com/downloads/en/details.aspx?FamilyID=c3342fb3-fbcc-4127-becf-872c746840e1

    1) For x64 (64-bit) computers, download and run EwsManagedApi.msi
    2) For x86 (32-bit) computers, download and run EwsManagedApi32.msi
    3) Requires Microsoft .NET Framework 3.5 and Microsoft Visual Studio 2008 or later

  • Le Café Central de DeVa

    Office Developer : Outlook & VBA Programming # 1


    By using Visual Basic for Applications (VBA), a simple but powerful programming language that you can use to extend Office 2010 applications with new capabilities and automate repeated tasks. I remember VBA is used for a long time in Microsoft Office based applications.

    I thought to combine the list the related articles that are pretty much helpful for you to move ahead:

  • Le Café Central de DeVa

    Debug : Workaround - Remote debugging monitor (msvsmon.exe) error on Windows 7


    I was playing around debugging a custom app in one of my Windows 7 & Visual Studio 2010. When I tried running msvsmon.exe (Remote Debugging Monitor) and got the following error message when attempting to remote debug:

    Error while trying to run project: Unable to start debugging.

    This operation returned because the timeout period expired.

    During further investigation, I found that the issue is that the firewall is not setup properly on the Win7 machine for remote debugging. I noticed that when msvsmon first launches, it will prompt the user to configure the firewall.

    Per the debugger blogpost, this happens due to the firewall security API changes since Vista, the prompt may not come up. I tried the following workaround to move ahead:

    Control Panel->System and Security->Windows Firewall: Change notification settings -> enable Notify me when Windows Firewall blocks a new program ->Ok

    After implementing the above, I started remote debugging again and this time I can notice that msvsmon shows popup a windows security alert dialog box that prompt to grant access permission to msvsmon.

    Happy debugging!!

  • Le Café Central de DeVa

    Downloads: Microsoft Exchange Server 2013 Service Pack 1 & Microsoft Office 2013 Service Pack1


    Click here to download Microsoft Exchange Server 2013 Service Pack 1 (SP1). It’s version would be “15.00.0847.032”. It resolves issues that were found in previous versions of Exchange Server 2013. This update rollup is highly recommended for all Exchange Server 2013 customers.

    This service pack resolves the issues that are described in the support KB article http://support.microsoft.com/kb/2926248 Winking smile

    Also, you can download the following files 32-bit /64-bit of Microsoft Office 2013 Service Pack1 (SP1) from Microsoft Download Center. Microsoft Office 2013 Service Pack 1 (SP1) provides the latest updates for Office 2013.

    This service pack includes two kinds of fixes:

    • Previously unreleased fixes that are included in this service pack. In addition to general product fixes, these fixes include improvements in stability, performance, and security.
    • All the monthly security updates that were released through January 2014, and all the Cumulative Updates that were released through December 2013.

    You can download the following workbook which lists the issues that are fixed by this service pack. Microsoft Office and SharePoint 2013 Service Pack 1 Changes.xlsx. For more info you can refer: http://support.microsoft.com/kb/2817430

  • Le Café Central de DeVa

    Exchange Management Shell : Changing DisplayName format “LastName, FirstName”


    As we know by default the Display Name of Exchange Mailboxes(Exchange Server 2007 SP2) is in the format of “Firstname Lastname”. I want to change this for the couple of existing mailboxes to “Lastname, Firstname” for one my customer – he preferred non-development stuff!!

    I tried to do the same using the Exchange Management Shell, which fits for my requirement:
    > Get-Mailbox “User Name” | Get-User | ?{ $_.Lastname -ne $null } | %{ $dispName=$_.LastName + “, ” + $_.FirstName ; set-mailbox $_.SamAccountName -Displayname $dispName }

    In case you want to revert back to the format “Firstname Lastname”, here’s the command for that.
    > Get-Mailbox “User Name” | Get-User | ?{ $_.Lastname -ne $null } | %{ $dispName=$_.FirstName + ” ” + $_.LastName ; set-mailbox $_.SamAccountName -Displayname $dispName }

    You can try this out…

  • Le Café Central de DeVa

    Developer Hub: Download Windows Phone Developer tools SDK 7.1 (Mango) beta & 7.0

      Now you can download the new Windows Phone Developer Tools 7.1 (Mango) Beta can be used to develop Applications for both 7.0 and 7.1 version of Windows Phone OS releases.  You can experiment with the latest tools release for Windows Phone. WPDT 7.1 Beta provides the tooling necessary to target the upcoming Windows Phone OS release (codenamed “Mango”) in addition to productivity enhancements such as an app profiler and an improved emulator.
      Although not required, the Windows Phone Developer Team strongly recommends that you install WPDT 7.1 Beta on a separate machine. Apps built for 7.0 by using the 7.1 beta tools should certify and behave similarly to those produced by your current WPDT environment, but these are beta tools and your apps may behave inconsistently. If you encounter an issue between the beta tools/emulator and production phones, please report the issue on the App Hub 'tools for wp7' forum.
      The Windows Phone Developer Tools includes the following,
      • Microsoft Windows Phone Developer Tools 7.1 (Beta)
      • Windows Phone Emulator (Beta)
      • Silverlight 4 SDK and DRT
      • Microsoft XNA Game Studio 4.0 Refresh Windows Phone Extensions
      • Microsoft Expression Blend SDK Preview for Windows Phone 7.1
      • WCF Data Services Client for Window Phone 7.1
          Please note:
          1) Windows Server, Windows XP & Virtual machine platforms are not supported
          2)  If you are installing Visual Studio 2010 Express for Windows® Phone 7.1 alone, you can install it on any drive. If Visual Studio 2010 Professional or higher is already installed on your development computer, Windows Phone Developer Tools 7.1 Beta is installed on the same drive as the existing Visual Studio installation.
          3) If you just need WP 7.0 SDK, then you can Download the Windows Phone 7.0 SDK (Windows Phone Developer Tools), then download and install the Windows Phone Developer Tools January 2011 Update and the Windows Phone Developer Tools Fix. The January 2011 Update should only be applied after you've installed the Windows Phone Developer Tools.

          French, Italian, German, and Spanish versions of the tools are available at the Microsoft Download Center.

                                                                                                                  blogged using my Windows Live Writer 2011…

        • Le Café Central de DeVa

          Troubleshooting: IIS/Exchange logs and WebDAV functions


          You can collect information about client requests by enabling logging for sites and services. IIS logs are stored in %SystemRoot%\system32\Logfiles\<service_name>. If you examine the IIS/Exchange log file you will see the request for the sample application being handled by IIS - you can notice couple of jargons like GET, PUT, POST, MKCOL, LOCK, UNLOCK, PROPFIND, SEARCH, PROPATCH, SUSBCRIBE, UNSUBSCRIBE, POLL etc.


          The three main HTTP functions used are GET, PUT and POST:

          • GET: Retrieves a document 

          • PUT: Puts an item in a folder 

          • POST: Submits an item to a folder

          In addition to above, there are few more WebDAV functions that are used:

          • MKCOL: Makes a collection that is in essence the same as a Web Storage System folder. MKCOL allows you to make folders and set their properties. 

          • LOCK: Locks documents to prevent writes. 

          • UNLOCK: Allows writes and creates updates. 

          • PROPFIND: Searches for properties individually or for a whole set of folders. 

          • SEARCH: Provides filter, subquery and sort capabilities to a search. 

          • PROPPATCH: Sets arbitrary properties on an item. 

          • SUBSCRIBE: Adds a user to a list. 

          • UNSUBSCRIBE: Removes a user from a list. 

          • POLL: Checks to see if the notification is fired.

          Happy troubleshooting!!

        • Le Café Central de DeVa

          How to : Determine the version number, build number & the service pack of Exchange Server?


          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:

          1. Start the Microsoft Exchange Administrator program.
          2. In the left pane, expand the objects until you locate the server object, and then click the server object.
          3. On the File menu, click Properties.
          If you have Microsoft Exchange 2000 Server or Microsoft Exchange Server 2003 computer, then follow these steps:
          1. Start the Microsoft Exchange Administrator program.
          2. In the left pane, expand the objects until you locate the server object.
          3. Right-click the server object, and then click Properties.

          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.


          Build number

          Release date




          Microsoft Exchange Server  4.0


          April 1996

          Microsoft Exchange Server  4.0 (a)


          August 1996

          Microsoft Exchange Server  4.0 SP1


          May 1996

          Microsoft Exchange Server  4.0 SP2


          August 1996

          Microsoft Exchange Server  4.0 SP3


          November 1996

          Microsoft Exchange Server  4.0 SP4


          April 1997

          Microsoft Exchange Server  4.0 SP5


          May 1998




          Microsoft Exchange Server  5.0


          March 1997

          Microsoft Exchange Server  5.0 SP1


          June 1997

          Microsoft Exchange Server  5.0 SP2


          February 1998




          Microsoft Exchange Server  5.5


          November 1997

          Microsoft Exchange Server  5.5 SP1


          July 1998

          Microsoft Exchange Server  5.5 SP2


          December 1998

          Microsoft Exchange Server  5.5 SP3


          September 1999

          Microsoft Exchange Server  5.5 SP4


          November 2000




          Microsoft Exchange 2000 Server


          October 2000

          Microsoft Exchange 2000 Server (a)


          January 2001

          Microsoft Exchange 2000 Server SP1


          July 2001

          Microsoft Exchange 2000 Server SP2


          December 2001

          Microsoft Exchange 2000 Server SP3


          August 2002

          Microsoft Exchange 2000 Server post-SP3


          September 2003

          Microsoft Exchange 2000 Server post-SP3


          April 2004

          Microsoft Exchange 2000 Server post-SP3


          August 2004

          Microsoft Exchange 2000 Server post-SP3


          March 2008   

          Microsoft Exchange 2000 Server post-SP3


          August 2008




          Microsoft Exchange Server  2003


          October 2003

          Microsoft Exchange Server  2003 SP1


          May 2004

          Microsoft Exchange Server  2003 SP2


          October 2005

          Microsoft Exchange Server  2003 post-SP2


          March 2008

          Microsoft Exchange Server  2003 post-SP2


          August 2008  




          Microsoft Exchange Server  2007

          8.0.685.24 or 8.0.685.25

          December 2006

          Microsoft Exchange Server  2007 SP1


          November 2007

        • Le Café Central de DeVa

          How to install the latest applicable updates for Microsoft Outlook 2003, 2007 and 2010?


          The above query is a common one that we receive from our customers. Have a look at our support KB regarding this (specific to US English version only) http://support.microsoft.com/kb/2625547 . This article provides a comprehensive list of the most recent hotfix updates and service packs for Microsoft Outlook. Some Outlook features are dependent on Microsoft Word and Microsoft Office components. Therefore, you should also install the latest updates for the Word and Office core components.

          The above article is applicable to Outlook 2003, Outlook 2007 and Outlook 2010. Also, the above article will be updated to reference new updates as they are released.

          Note: You can visit the Update Center for Microsoft Office (http://technet.microsoft.com/en-us/office/ee748587.aspx) to find links to the most recent cumulative and public updates for Microsoft Office.

          Happy updating!!

        • Le Café Central de DeVa

          Get all mailbox information from WMI &amp; C#.Net


          In one scenario, there was a need for me to get all mailbox related information using WMI and C#.Net.

          Here is a code snippet to get all mailbox information from an Exchange Server - WMI & C#.Net.

          using System;
          using System.Management;

          namespace ConsoleTwo
              class Class1

                  static void Main(string[] args)
                          System.Management.ConnectionOptions objcon = new System.Management.ConnectionOptions();
                           objcon.Impersonation = ImpersonationLevel.Impersonate;
                          // Exchange Server Name
                          string cServername = "Server Name";
                          // Create a management scope into Exchange WMI namespace
                          System.Management.ManagementScope exScope =
                              new System.Management.ManagementScope(@"\\" + cServername + @"\root\MicrosoftExchangeV2", objcon);

                          // Create a query to get the data from the Exchange WMI
                          System.Management.ObjectQuery objQry =
                              new System.Management.ObjectQuery("SELECT * FROM Exchange_Mailbox");

                          // Retrieves a collection of management objects based on the query.
                          System.Management.ManagementObjectSearcher objSrch =
                              new System.Management.ManagementObjectSearcher(exScope, objQry);
                          System.Management.ManagementObjectCollection qryCol = objSrch.Get();

                           // Loop each item in the collection
                          foreach (System.Management.ManagementObject mailBox in qryCol)
                               Console.WriteLine("{0} {1} {2}", mailBox["MailboxDisplayName"].ToString() , mailBox["TotalItems"].ToString() , mailBox["size"].ToString() );
                      catch (Exception eVal)
                          Console.Write(eVal.InnerException + eVal.Message + eVal.Source + eVal.StackTrace );

        • Le Café Central de DeVa

          Part # 4 - Configure Public folder permissions


          Configure Public folder permissions

          Please find the lists of management tasks that you can perform to configure and maintain public folder permissions:

          • How to Add Permissions for Client Users to Access Public Folder Content
            You can use the Add-PublicFolderClientPermission cmdlet or the AddUsersToPFRecursive.ps1 user management script to specify the permissions for the client user. You can create the access rights by using either the predefined permission roles or by creating custom access rights.
          • How to Remove or Replace Public Folder Client Permissions
            You can use the Remove-PublicFolderClientPermission cmdlet or the RemoveUserFromPFRecursive.ps1 script to remove permissions for the client user. You can remove access rights by using either the predefined permission roles or by using the access rights.
            You can use the ReplaceUserWithUserOnPFRecursive.ps1 and ReplaceUserPermissionOnPFRecursive.ps1 scripts to replace client permissions on a public folder.

          • How to View Public Folder Client Permissions Settings
            You can use the Get-PublicFolderClientPermission cmdlet to view the client access rights associated with a public folder.
          • How to Grant the Send As Permission for a Mail-Enabled Public Folder
            You can use Send As permissions to configure a mail-enabled public folder so that users other than the public folder owner can use the mail-enabled public folder to send messages.
            The Send As permission is not granted until after replication has occurred. Replication times depend on your Microsoft Exchange and network configuration.
          • How to Add Administrative Permissions for Users to Access Public Folders
            You can use the Add-PublicFolderAdministratorPermission cmdlet, the Add-ExchangeAdministrator cmdlet, or the Add Exchange Administrator wizard to grant administrative rights for a user to access a public folder or public folder hierarchy.
          • How to Remove Public Folder Administrative Permissions
            You can use the Remove-PublicFolderAdministratorPermission cmdlet, the Remove-ExchangeAdministrator cmdlet, or the Add Exchange Administrator wizard to remove administrative access rights from a user for a public folder or public folder hierarchy.
          • How to View Public Folder Administrative Permission Settings
            You can use the Get-PublicFolderAdministratorPermission cmdlet, the Get-ExchangeAdministrator cmdlet, or the Organization Configuration node to view the administrative rights that are associated with a public folder or public folder hierarchy.
        • Le Café Central de DeVa

          Outlook Object Model : Creating Outlook Categories programmatically and assign colors, shortcut keys to that


          In this blogpost, we will try to create the Outlook Categories programmatically using Outlook Object Model API. Also we will assign the relevant colors and shortcuts to that. Whenever we try with Outlook Object Model, it’s relatively simple.

          '[Code snippet to create Categories]
          Private Sub CreateCategory()
              Dim objNameSpace As NameSpace
              Dim objCategory As Category    
              ' Obtain a NameSpace object reference
              Set objNameSpace = Application.GetNamespace("MAPI")
              'Add the Category, set its color and shortcutkey, if any
              Set objCategory = objNameSpace.Categories.Add("SampleCat", OlCategoryColor.olCategoryColorDarkBlue, 
             ' Clean up
              Set objCategory = Nothing
              Set objNameSpace = Nothing
          End Sub
          Happy programming!!
        • Le Café Central de DeVa

          OOM & VBA : How to delete Outlook recurring Task items (whose status marked as Completed)

          '[VBA & Outlook Object Model : Code snippet to delete Outlook recurring Task items (whose status marked as Completed)]
          'Declaration part
          dim otaskitem as Outlook.Taskitem
          dim ofolder as Outlook.Folder
          'Get the Task items
          set ofolder = Application.Session.GetDefaultFolder(olFolderTasks)
          For each item in ofolder.items
          set otaskitem = Item
          'Check the status of the specific Taskitem is "Completed" or not
          if otaskitem.Status = olTaskcomplete then
          'Msgbox "Completed Tasks"
          'Msgbox "Not Completed Tasks"
          end if
        • Le Café Central de DeVa

          Exchange Server 2007 & OWA : Password change feature


          If you work with Exchange Server 2007, this method is no longer required.  But, it can be used with Windows Server 2003 and Exchange Server 2007 configurations when the ability to change passwords after they have expired or when users are required to change their password at the first logon is needed.


          When i was in search mode regards to this, just i found an article by Will Duff, which talks about what we need to know about the OWA Change Password feature of Exchange Server 2007 ? It’s worth of reading…:)

          He not only talks about the OWA & Exchange server 2007, but has various references to it’s previous versions.

          “…The previous versions of Exchange Server utilized the Change Password functionality for IIS 5 and 6 using the IISADMPWD virtual directory and a .DLL file on the server.  These configurations were discussed in the following KB articles:

          FIX: You experience various problems when you use the Password Change pages in IIS 5.0

          FIX: You experience various problems when you use the Password Change pages in IIS 6.0

          Implementing the Change Password feature with Outlook Web Access

        • Le Café Central de DeVa

          Coding practices : Outlook automation using VB.Net


          You can try when you do programming with VB.Net and Outlook automation:

          • When you start automation code by declaring object variables with a specific object type that represents the top-level object and then declaring any child objects you want to reference.
            Dim olApp  As Outlook.Application

          • You then create an instance of the top-level object by using the Set statement and the New keyword.
          • Set olApp = New Outlook.Application

          Please note: You need to understand that the New keyword can't be used to create a new instance of a child object.

          • To create an instance of a child object, use the appropriate method of the parent object along with the Set statement.
          • Set MailMessage = olApp.CreateItem(olMailItem)

          • At the end of the procedure, each object variable is destroyed by explicitly setting it equal to the Nothing keyword. If you do this, there is no need to use a Set statement to instantiate the object. However, this technique is not recommended because you have no control over when the object variable is created.
          • In detail, if your code must test to see if an object exists by using a statement such as If olApp Is Nothing Then, this test will return True if you have created an instance of the object in the Dim statement. Additionally, you might not need to use an object except at the user's request.
          • If you create an instance of the object by using New in the Dim statement, the object will be created even if it isn't used. To maintain control over when an object is created, don't use the New keyword in the Dim statement, and instantiate the object by using a Set statement at the point in your code where you must use the object.
        • Le Café Central de DeVa

          Download: Exchange MAPICDO (March 2014) released


          Yesterday we released the latest Exchange MAPICDO (March 2014) and its version is You can download it from @ http://www.microsoft.com/en-us/download/details.aspx?id=42040.
          Note: Make sure to uninstall the earlier version (if you have installed it earlier) and install the latest one. For additional info, you can refer Steve’s blog post.

        • Le Café Central de DeVa

          Outlook Programming Series # 13 : Programmatic equivalent for Outlook UI's Send/Receive


          Whenever we work with Outlook 2007 UI, we click either "Send/Receive button" or press "F9" to send and receive emails. In couple of our cases we use to do programmatically you can make use of Outlook Object Model's (OOM) SendAndReceive method. You need to know that calling the SendAndReceive method is synchronous only.

          Syntax: expression.SendAndReceive(showProgressDialog)

          Here, showProgressDialog - Indicates whether the Outlook Send/Receive Progress dialog box should be displayed, regardless of user settings


          • SendAndReceive provides the programmatic equivalent to the Send/Receive All command that is available when you click Tools and then Send/Receive.
          • If you do not need to synchronize all objects, you can use the SyncObjects collection object to select specific objects. For more information, see NameSpace.SyncObjects.
          • All accounts defined in the current profile are used in Send/Receive All.
          • If an online connection is required to perform the Send/Receive All, then the connection is made according to user preferences.

          Using with Outlook Object Model & Visual Basic 6:

          Use NameSpace.SendAndReceive Method. Initiates immediate delivery of all undelivered messages submitted in the current session, and immediate receipt of mail for all accounts in the current profile.

          Using in .Net environment & Outlook interop:

          Use NameSpaceClass.SendAndReceive Method (Microsoft.Office.Interop.Outlook). The types and members of the Microsoft.Office.Interop.Outlook namespace provide support for interoperability between the COM object model of Microsoft Office Outlook 2007 and managed applications that automate Outlook.

          This is a .NET class or a member of a .NET class created when processing a COM coclass that is required by managed code for interoperability with the corresponding COM object. Use this class only when you have to access an earlier event in this class that has been subsequently extended in a later version of Outlook. Otherwise, use the .NET interface derived from the COM coclass.

          Code snippet (used in the add-in):


             1:  public virtual void _NameSpace.SendAndReceive (
             2:      [InAttribute] bool showProgressDialog
             3:  )

          then we need to use the SyncObject,

             1:  //trap the SyncObject.SyncStart Event 
             2:    this.Application.Session.SyncObjects[1].SyncStart += new Microsoft.Office.Interop.Outlook.SyncObjectEvents_SyncStartEventHandler(ThisAddIn_SyncStart);
             4:  //finally don't forget to trap the SyncObject.SyncEnd Event 
             5:  this.Application.Session.SyncObjects[1].SyncEnd += new Microsoft.Office.Interop.Outlook.SyncObjectEvents_SyncEndEventHandler(ThisAddIn_SyncEnd);

          Visual Basic:

             1:  Dim instance As NameSpaceClass
             2:  Dim showProgressDialog As Boolean
             4:  CType(instance, _NameSpace).SendAndReceive(showProgressDialog)



        • Le Café Central de DeVa

          Outlook Programming: How to retrieve unread messages from any Outlook folder?

          Recently one of my customer updated that he got a requirement to programmatically retrieve unread messages from any Outlook folder to be implemented part of his application. We tried the following steps -  Will show you how you can programmatically retrieve unread messages from any Outlook folder using Outlook Object Model (OOM) API.

          Let we first have a look at the following code snippet (C#.Net):
          Outlook.MAPIFolder Fldr = this.Application.ActiveExplorer().Session.GetDefaultFolder
          Outlook.Items UnReads = Fldr.Items.Restrict("[Unread]=true");
          MessageBox.Show(string.Format("Unread items in Inbox = {0}", UnReads.Items.Count));

          Line # 1, we need to specify target Outlook folder that we need to read messages. Here I used Inbox.
          Line # 2, we need to filter target folder items using Restrict filter as Unread]=true to get unread items
          Line # 3, displaying the number of unread items.

          Please note: In order to retrieve unread messages from any Outlook folder, just point out the target folder in the Line # 1, instead of Inbox.

          Pretty simple isn’t it Winking smile

        • Le Café Central de DeVa

          CASPOL & Add-in : How to Full trust the assemblies ?


          If we want to "fully trust" the assemblies, it can be done through the signed assemblies. In Visual Studio 2005, you need to select the Properties for the project and select the Signing tab.  After you installed (including the newly signed assemblies) you need to give permission to the assemblies. This can be done using a tool called CASPOL.EXE.

          The CASPOL or Code Access Security Policy tool enables users and administrators to modify security policy for the machine policy level, the user policy level, and the enterprise policy level. For detailed information, you can have a look at the following article.

          Find the command line for registering your file: caspol -u -ag All_Code -url "<full path to your file>" FullTrust -n "<assembly name>"

          If you have more than one file or if you want to do this for a directory: caspol -u -ag All_Code -url "<directory path>\*" FullTrust

        • Le Café Central de DeVa

          OWA Customization: PSS support policy for Exchange Server 5.5, 2000 &amp; 2003


          OWA 2003Per the support KB, Microsoft PSS has the support policy for customization of Outlook Web Access for Exchange that cover its versions like 5.5, 2000 & 2003.

          Per the article, we can get more information regarding the support policy for OWA customization for its various versions like,

          “…The Exchange 5.5 version of OWA is made up of Active Server Pages (ASPs).
          The Exchange 2000 and Exchange 2003 versions of OWA are composed of two main components: templates and controls. Templates are served from a binary Internet Server Application Programming Interface (ISAPI) extension that communicates with the Exchange store. Controls are referenced by the templates and are located in the Program Files\Exchsrvr\Exchweb folder. Controls are made up of script or HTML files, such as JScript files (.js), HTML Component files (.htc), cascading style sheet files (.css), Extensible Stylesheet Language (XSL) transform files (.xsl), and graphics files.


          You may want to customize OWA by changing features or by modifying the user interface or by using the article. Although you can customize OWA objects by modifying either the script code or the HTML, Microsoft does not recommend that you do so. Microsoft Product Support Services (PSS) also cannot help you with the customization. However, if you want to customize OWA, the following limitations and considerations apply:

          • PSS does not provide assistance to customize OWA objects.
          • If you contact PSS about an OWA issue for a server that OWA is customized on, you must replace the customized files with the original versions of the files and verify that you can reproduce the issue by using the original versions of the files. If the issue occurs only with the customized versions of the files, and you cannot reproduce the issue with the original versions of the files, PSS cannot help you troubleshoot the issue.
          • If you install a service pack or hotfix that updates the files in the Program Files\Exchsrvr\Exchweb folder, any customized files that exist in that folder are overwritten. If you do not want to lose the customizations that you created, create a backup of the customized files, and then restore the files after you install the service pack or hotfix.

          Although PSS cannot help you customize OWA, the following resources are available:


          But still lot of guys around the world customize the OWA though.

          You can find the following article,

          Customizing the Outlook Web Access Logon Page

          Still want to customize the CSS and Dynamic styles, you can refer these articles,
          W3C: Cascading Style Sheets Home Page
          W3C: Adding a Touch of Style
          W3C: Cascading Style Sheets, level 2: CSS2 Specification
          MSDN: Introduction to Dynamic Styles

          Hope this helps!!

        • Le Café Central de DeVa

          Securing Exchange Server 2007 & Database Encryption with BitLocker?


          My experience with BitLocker:
          I use Windows BitLocker Drive Encryption (BitLocker) in my Windows Server Vista, 2008 & new Win 7 boxes. As i am trying this for a while, i thought to apply it with Exchange Server 2007 SP2 also; also wanted to see, whether i can make Exchange Server more stronger?

          How i tried?

          Step 1: I tried creating my new installation of Windows Server 2008 machine with SP updates
          Step 2: Tried creating the BitLocker
          Step 3: Tried creating the Exchange Server 2007 SP2

          Let me share the steps that i followed. Also i want to share couple of basics about BitLocker, if you’re interested…

          What’s a BitLocker?
          BitLocker a security feature in the Windows Vista, Windows Server 2008, Windows 7 operating systems that can provide protection for the operating system on your computer and data stored on the operating system volume.

          What BitLocker do?
          Mainly it takes care of the following:

          • It encrypts all data stored on the Windows operating system volume. This includes the Windows operating system, hibernation and paging files, applications, and data used by applications.
          • It is configured by default to use a Trusted Platform Module [TPM] to help ensure the integrity of early startup components (components used in the earlier stages of the startup process), and "locks" any BitLocker-protected volumes so that they remain protected even if the computer is tampered with when the operating system is not running.

          What makes BitLocker – the special?
          What i learnt is… BitLocker is implemented in code in the early startup components ((master boot record (MBR), boot sector, boot manager, Windows Loader)), and as a filter driver that is an integral part of the operating system. When BitLocker is first enabled, existing data on the volume must be encrypted. You can continue to use the computer during this process. 

          Also the BitLocker helps,

          + Address threats that may be caused by data theft or exposure from lost or stolen computers.
          + Data on a lost or stolen computer is vulnerable to unauthorized access if a software program is run on the computer or if the computer's hard disk drives are transferred to a different computer.
          + Reduce unauthorized data access by improving file and system protections.
          + Make data inaccessible when BitLocker-protected computers are decommissioned or recycled.

          To get more information regarding the BitLocker Drive Encryption, you can refer this TechNet article. Also you can refer the BitLocker Encryption  Step-by-Step Guide for more information.

          How this help us with Exchange Server to make it secure?
          In Windows Server 2008, BitLocker protection can be extended to volumes used for data storage as well, along with the protection for the operating system on your computer.

          BitLocker requires that the active partition (or called as system partition) be a non-encrypted partition. The Windows operating system is installed to a second partition that is encrypted by BitLocker. Whenever dealing with the encryption of data, especially in an enterprise environment, you must consider how that data can be recovered in the event of hardware failure, changes in personnel, or other situations in which encryption keys are lost.

          How to do this?
          BitLocker enables an IT administrator to encrypt the operating system volume and additional volumes on a Windows Server 2008-based computer. Let we try this out. By default, BitLocker is not installed in Windows Server 2008. You must add BitLocker from the Server Manager page in Windows Server 2008.

          I tried installing from the command prompt.

          1. Click the Start button, click All Programs, click Accessories, Right-click Command Prompt, and click Run as administrator.

          2. If the User Account Control (UAC) dialog box appears, select Continue.

          3. At the command prompt, type the following:

            ServerManagerCmd -install BitLocker -restart

            This installs BitLocker if you have not already installed it.

          4. After you install and configure BitLocker, you must restart the server to enable the features that BitLocker provides.

          Additionally, what more you can secure?
          As per the TechNet article, you can use BitLocker to encrypt the volumes that host Exchange 2007 database files and transaction log files. Additionally, because the Exchange Storage Engine (ESE) works well with BitLocker, you do not experience a significant performance penalty when you encrypt the volumes that host the Exchange database files and transaction log files.

          Do you know, this is supported by Microsoft CSS?
          As per the TechNet article - because of rigorous testing and because of the integration of BitLocker in Windows Server 2008, Microsoft Customer Support Services fully supports Exchange 2007 for use with BitLocker-encrypted volumes.


        Page 4 of 27 (654 items) «23456»