Le Café Central de

                    ... Deva blogs!!

  • Le Café Central de DeVa

    How to get Explorer & Inspector selected mail item using Outlook Object Model (OOM) & .Net?


    In this article, we are going to see how we can get Explorer & Inspector selected mail item using Outlook Object Model (OOM) & .Net and process it.

    '[Code Snippet : VB.Net, .Net Framework 2.0/3.5, Outlook Object Model (OOM)]
               'Declaration part
                Dim ThisOutlookSession As Outlook.Application = New Outlook.Application
                Dim NS As Outlook.NameSpace = ThisOutlookSession.Session
                Dim objsel As Object
               'Check it's Inspector or Explorer Window
                If TypeName(ThisOutlookSession.ActiveWindow) = "Inspector" Then
                    objsel = ThisOutlookSession.ActiveInspector.CurrentItem
                   'Get the selected item for processing
                    objsel = ThisOutlookSession.ActiveExplorer.Selection.Item(1)
                   'Check the relevant item and process per your logic
                    If (TypeOf objsel Is Outlook.MailItem) Then
                        Dim mailItem As Outlook.MailItem = _
                            TryCast(objsel, Outlook.MailItem)
                        MsgBox("Mail Item's Subject" & mailItem.Subject)
                        'Implement your business logic here
                    ElseIf (TypeOf objsel Is Outlook.ContactItem) Then
                        Dim contactItem As Outlook.ContactItem = _
                           TryCast(objsel, Outlook.ContactItem)
                        MsgBox("Contact Item's Subject" & contactItem.Subject)
                        'Implement your business logic here
                    ElseIf (TypeOf objsel Is Outlook. _
                    AppointmentItem) Then
                        Dim apptItem As Outlook.AppointmentItem = _
                           TryCast(objsel, Outlook.AppointmentItem)
                        MsgBox("Appointment Item's Subject" & apptItem.Subject)
                        'Implement your business logic here
                    ElseIf (TypeOf objsel Is Outlook.TaskItem) Then
                        Dim taskItem As Outlook.TaskItem = _
                            TryCast(objsel, Outlook.TaskItem)
                        MsgBox("Task Item's Body" & taskItem.Body)
                        'Implement your business logic here
                    ElseIf (TypeOf objsel Is Outlook.MeetingItem) Then
                        Dim meetingItem As Outlook.MeetingItem = _
                            TryCast(objsel, Outlook.MeetingItem)
                        MsgBox("Meeting Item's subject" & meetingItem.Subject)
                        'Implement your business logic here
                    End If
                End If
                'Release the unwanted objects
                objsel = Nothing

    Applicable environment: Outlook 2007, Outlook Object Model, VB.Net, .Net Framework 2.0/3.5

  • Le Café Central de DeVa

    How Microsoft Product Activation works?

    To reduce software piracy and to make sure that all Microsoft customers receive the product quality that they expect, Microsoft is now including product activation technology in several products.

    Product activation is a simple, straightforward process that is completely software based. It requires no hardware add-ons or any other external tool. In most cases, the only information that is needed to activate a product is an installation ID, which is created by the software itself. The information that is collected during activation will not be used to personally identify the user.

    To activate a Microsoft product, select either the Internet option or the telephone option in the Product Activation Wizard.
      • With Internet-based activation, Microsoft servers process the activation and activate the product.
      • With telephone-based activation, you activate your product by contacting a Microsoft Product Activation Center and following the steps that are provided by an automated telephone system or by a customer service representative.

    Note You should have your installation ID when you speak with a customer service representative. This ID is displayed in the product activation wizard.

    To activate Windows or Office by telephone, following these steps:

    Access the Product Activation Wizard: Each product has a different way to start the Product Activation wizard, follow these steps to start the wizard:
    Windows 7

    ·         Click Start

    ·         Right-click Computer.

    ·         Select Properties.

    ·         At the bottom of this window, click Activate Windows now.

    Note To activate your product directly by telephone, type slui.exe 4 in the Search programs and files and then press Enter. Select your location in the drop-down list for a toll free activation telephone number to call. This method is for Windows 7 only.

    Windows Vista

    §  Click Start

    ·         Right-click Computer.

    ·         Select Properties.

    ·         At the bottom of this window, click Activate Windows.

    Windows XP

    ·         Click Start.

    ·         Point to All Programs.

    ·         Point to Accessories.

    ·         Point to System Tools.

    ·         Click Activate Windows.

    Office programs, such as Microsoft Word, Microsoft Excel, Microsoft PowerPoint, and so on
    Office 2010

    ·         Click Start.

    ·         Point to All Programs.

    ·         Point to Microsoft Office.

    ·         Click any Office application (such as Word).

    ·         After the application starts, click the File tab at the top.

    ·         On the right side, click Help.

    ·         Activation information and a Change Product Key link can be seen on the right side.

    ·         Click Change Product Key to launch the Activation Wizard.

    ·         Enter the product key and follow the steps for activation.

    2007 Microsoft Office

    ·         Click Start.

    ·         Point to All Programs.

    ·         Point to Microsoft Office.

    ·         Click any Office program.

    ·         After the Office program starts, click the Office button.

    ·         Click program_name Options. (For example, click Word Options or Excel Options.)

    ·         Click Resources.

    ·         On the activate Microsoft Office line, click Activate.

    Microsoft Office 2003 or earlier versions of Microsoft Office programs

    ·         Click Start.

    ·         Point to All Programs.

    ·         Point to Microsoft Office.

    ·         Click any Office program.

    ·         After the Office program starts, the Office Activation Wizard will be displayed.

    o   If the Online Activation failed, select Use the automated phone system to activate

    o   Click the drop-down menu and select the nearest location to you for a toll free activation telephone number to call and then click Next.

    o   When you call the activation telephone number, you are asked to enter or speak the Installation ID numbers displayed on your screen. The automated service will issue you a confirmation ID number. Type in the confirmation ID number, and then click Next to active the product.

    o   If the automated service is unsuccessful, stay on the line and your call will be transferred to a Microsoft Product Activation Customer Service representative who will help you to activate your product. The representative will give you a confirmation ID number if your copy of product is genuine.

    Telephone Numbers: For more information about Microsoft Product Activation Center Telephone Number, visit the following site: Microsoft Activation Centers Worldwide Telephone Numbers.


  • Le Café Central de DeVa

    Outlook Error : There is not enough memory to perform the operation


    When one my customer tried to add a Global Address Book entry to the Contacts folder, the contact is not added. She received the following error message: There is not enough memory to perform the operation.

    This problem may occur if the size of the certificate data exceeds 32,768 bytes (32 KB).

    Follow the following steps to resolve the issue:

    • To resolve this problem, apply hotfix 948075.
    • Then, add the StripCertsNotValidForMail value to the registry to enable the hotfix.

    For more detailed information, I request you to go through the following Microsoft Support Knowledge based article.

  • Le Café Central de DeVa

    EWS Programming # 1 : Creating my first Exchange Web Services client application in C#.Net


    Please find my first web service client that i tried couple of months earlier that creates an e-mail item in the Sent Items folder. You can use Microsoft Visual Studio 2005 to create a simple Exchange Web Services client application like this.

       1:  using System;
       2:  using System.Net;
       3:  using System.Security.Cryptography.X509Certificates;
       4:  using System.Net.Security;
       6:  // The ExchangeWebServices namespace was created by using Visual Studio // 2005 and the Add Web Reference wizard.
       7:  using ExchangeWebServices;
       9:  namespace Devas_First_WebService
      10:  {
      11:      partial class Program
      12:      {
      13:          static void Main(string[] args)
      14:          {
      15:              ServicePointManager.ServerCertificateValidationCallback =
      16:              delegate(Object obj, X509Certificate certificate, X509Chain chain, SslPolicyErrors errors)
      17:              {
      18:                  // Replace this line with code to validate server 
      19:  // certificate.
      20:                  return true;
      21:              };
      23:              // Identify the service binding and the user.
      24:              ExchangeServiceBinding esb = new ExchangeServiceBinding();
      25:          // Provide the Network credentials - username, password, domain
      26:              esb.Credentials = new NetworkCredential("<username>", "<password>", "<domain>");
      27:          // Provide the Exchange Web Service (URL)
      28:              esb.Url = @"https://<FQDN>/EWS/Exchange.asmx";
      30:              // Create the CreateItem request.
      31:              CreateItemType createEmailRequest = new CreateItemType();
      33:              // Specifiy how the e-mail will be handled.
      34:              createEmailRequest.MessageDisposition = MessageDispositionType.SaveOnly;
      35:              createEmailRequest.MessageDispositionSpecified = true;
      37:              // Specify the location of sent items. 
      38:              createEmailRequest.SavedItemFolderId = new TargetFolderIdType();
      39:              DistinguishedFolderIdType sentitems = new DistinguishedFolderIdType();
      40:              sentitems.Id = DistinguishedFolderIdNameType.sentitems;
      41:              createEmailRequest.SavedItemFolderId.Item = sentitems;
      43:              // Create the array of items.
      44:              createEmailRequest.Items = new NonEmptyArrayOfAllItemsType();
      46:              // Create a single e-mail message.
      47:              MessageType message = new MessageType();
      48:              message.Subject = "Daily Report";
      49:              message.Body = new BodyType();
      50:              message.Body.BodyType1 = BodyTypeType.Text;
      51:              message.Body.Value = "(1) Handled customer issues, (2) Saved the world.";
      52:              message.Sender = new SingleRecipientType();
      53:              message.Sender.Item = new EmailAddressType();
      54:              message.Sender.Item.EmailAddress = "user1@example.com";
      55:              message.ToRecipients = new EmailAddressType[1];
      56:              message.ToRecipients[0] = new EmailAddressType();
      57:              message.ToRecipients[0].EmailAddress = "user2@example.com";
      58:              message.Sensitivity = SensitivityChoicesType.Normal;
      60:              // Add the message to the array of items to be created.
      61:              createEmailRequest.Items.Items = new ItemType[1];
      62:              createEmailRequest.Items.Items[0] = message;
      64:              try
      65:              {
      66:                  // Send a CreateItem request and get the CreateItem 
      67:  // response.
      68:                  CreateItemResponseType createItemResponse = esb.CreateItem(createEmailRequest);
      69:                  ArrayOfResponseMessagesType responses = createItemResponse.ResponseMessages;
      70:                  ResponseMessageType[] responseMessages = responses.Items;
      72:                  // Access the response messages.
      73:                  foreach (ResponseMessageType respMsg in responseMessages)
      74:                  {
      75:                      if (respMsg.ResponseClass == ResponseClassType.Error)
      76:                      {
      77:                          throw new Exception("Error: " + respMsg.MessageText);
      78:                      }
      79:                      else if (respMsg.ResponseClass == ResponseClassType.Warning)
      80:                      {
      81:                          throw new Exception("Warning: " + respMsg.MessageText);
      82:                      }
      84:                      // Check to determine whether the response message is the correct type.
      85:                      if (respMsg is ItemInfoResponseMessageType)
      86:                      {
      87:                          ItemInfoResponseMessageType createItemResp = (respMsg as ItemInfoResponseMessageType);
      88:                          ArrayOfRealItemsType aorit = createItemResp.Items;
      90:                          foreach (ItemType item in aorit.Items)
      91:                          {
      92:                              if (item is MessageType)
      93:                              {
      94:                                  MessageType myMessage = (item as MessageType);
      95:                                  Console.WriteLine("Created item: " + myMessage.ItemId.Id);
      96:                                  Console.ReadLine();
      97:                              }
      98:                              // If needed add the logic to check and cast for all other types.
      99:                          }
     100:                      }
     101:                  }
     102:              }
     103:              catch (Exception ex)
     104:              {
     105:                  Console.WriteLine(ex.Message);
     106:                  Console.ReadLine();
     107:              }
     108:          }
     109:      }
     110:  }
    Reference: Creating an Exchange Web Services Client Application
  • Le Café Central de DeVa

    TechED 2012: Mark Russinovich’s Malware Hunting with the Sysinternals Tools


    This was one of the interesting session that I was looking for… Usually I follow Mark’s blog and read the related info. So I was super excited to watch this one. Ok, let me switch back… the session provides an overview of several Sysinternals tools, including Process Monitor, Process Explorer, and Autoruns, focusing on the features useful for malware analysis and removal. These utilities enable deep inspection and control of processes, file system and registry activity, and autostart execution points. Mark Russinovich demonstrates their malware-hunting capabilities by presenting several real-world cases that used the tools to identify and clean malware, and concludes by performing a live analysis of a Stuxnet infection’s system impact.

    Hope you enjoyed it!!

  • Le Café Central de DeVa

    Security warning: The name of the security certificate is invalid or does not match the name of the site


    Recently i started MS Outlook 2007 and tried connecting to a mailbox that is hosted on a mailbox server that is running Microsoft Exchange Server 2010 inside the local network. I received the following security warning “The name of the security certificate is invalid or does not match the name of the site.”

    During my analysis, i found that this error had happened due to the default self-signed Exchange Server 2010 certificate – it causing a name mismatch error to occur.

    Also regarding this, i found the following support knowledgebase article talks about it - this scenario applies only to Outlook clients that connect to Exchange from inside the local network.In order to overcome the problem and the article provides resolution also.

    Based on the above article this issue may occur if the following conditions are true:

    • You replace the default self-signed Exchange Server 2007 or Exchange Server 2010 certificate with a different certificate.
      Note The Setup program in Exchange Server 2007 or in Exchange Server 2010 creates a default self-signed certificate when Exchange Server 2007 or Exchange Server 2010 is installed.
    • The common name on the replacement certificate does not match the fully qualified domain name (FQDN) of the URL that is stored in the following objects:
      • The Service Connection Point object for the Auto discover service
      • The InternalUrl attribute of Exchange 2007 Web Service (EWS)
      • The InternalUrl attribute of the Offline Address Book Web service
      • The InternalUrl attribute of the Exchange unified messaging (UM) Web service
    By default, the URL that is stored in these objects references the NetBIOS name of the server. For example, a URL that resembles the following URL is stored:


    This may differ from the host name that is used in the FQDN of the replacement certificate. For example, the replacement certificate may have an FQDN that resembles the following FQDN: mail.contoso.com

    This issue causes a name mismatch error to occur. Therefore, you receive the security warning message when you try to connect Outlook 2007 to the mailbox

  • 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

    Exchange Server: How to retrieve appointments using C# & WebDAV?

    Code Snippet (C#):
       //Declaration part
        string strExchSvrName = "";
        string strMailbox = "";
        string strCalendarUri = "";
        string strDomain = "";
        string strUserName = "";
        string strPassword = "";
        System.Net.HttpWebRequest WebDavRequest = null;
        System.Net.HttpWebResponse WebDavResponse = null;
        System.Net.CredentialCache MyCredentialCache = null;
        byte[] bytes = null;
        System.IO.Stream WebDavRequestStream = null;
         // Provide the Exchange server name;
          strExchSvrName = "mydomain.in";
          // Provide Mailbox folder name.
           strMailbox = "Mailbox1";
          //if HTTPS -then provide URI of the user's calendar folder
          strCalendarUri = "https://" + strExchSvrName + "/exchange/"+ strMailbox + "/Calendar/";
            //if HTTP -then provide URI of the user's calendar folder
            //strCalendarUri = "http://" + strExchSvrName + "/exchange/" + strMailbox + "/Calendar/";
            //Provide the User name and password of appointment creator. Make sure the user has enough permissions to read
            strUserName = "username"; 
            strDomain = "domain";
            strPassword = "password";
            //Build the Query
            string query = "<?xml version=\"1.0\"?><D:searchrequest xmlns:D = \"DAV:\" >"
                    + "<D:sql>SELECT \"http://schemas.microsoft.com/exchange/outlookmessageclass\", \"DAV:contentclass\", 
    \"DAV:displayname\" FROM \""
    + strCalendarUri + "\""
                    + "WHERE \"DAV:ishidden\" = true AND \"DAV:isfolder\" = false"
                    + "</D:sql></D:searchrequest>";
            query = "<?xml version=\"1.0\"?>"
                    + "<dav:searchrequest xmlns:dav=\"DAV:\">"
                    + "<dav:sql>"
                    + "SELECT "
                    + "\"DAV:displayname\", " // Appointment Uri portion of the resource
                    + "\"DAV:href\", " // Full resource Uri of the appointment
                    + "\"urn:schemas:httpmail:subject\", " // Subject of appointment
                    + "\"urn:schemas:calendar:dtstart\", " // Start date/time of appointment
                    + "\"urn:schemas:calendar:dtend\", " // End date/time of appointment
                    + "\"urn:schemas:httpmail:textdescription\", " // Body of appointment
                    + "\"urn:schemas:calendar:location\", " // Location of appointment
                    + "\"urn:schemas:calendar:alldayevent\", " // Whether appointments an all day appointment
                    + "\"urn:schemas:calendar:meetingstatus\", " // Confimed status of the appointment
                    + "\"urn:schemas:calendar:busystatus\", " // Comitted status the appointment represents
                    + "\"http://schemas.microsoft.com/mapi/proptag/x823D0003\", " // Color of the appointment
                    + "\"urn:schemas:calendar:reminderoffset\", " // Reminder offset of the appointment
                    + "\"DAV:ishidden\", " // Whether this is hidden
                    + "\"urn:schemas:calendar:instancetype\", " // Relation of the appointment to a recurring series
                    + "\"urn:schemas:calendar:transparent\", " // Transparency of the appointment to free/busy searches
                    + "\"urn:schemas:calendar:timezoneid\" " // Display timezone of the appointment
                    + "FROM Scope('SHALLOW TRAVERSAL OF \"" + strCalendarUri + "\"') "
                    + "WHERE "
                    + "(\"DAV:contentclass\" = 'urn:content-classes:appointment' ) " // Item is an appointment
                    + "AND (NOT \"urn:schemas:calendar:instancetype\" = 1) " // appointment is not the master of a recurring series (Get single
    appointments or instances of recurring appointments)
                    + "AND (\"urn:schemas:calendar:dtend\" &gt; '" + 
                    Convert.ToDateTime("3-12-2007").Date.ToUniversalTime().ToString("yyyy/MM/dd HH:mm:ss") + "')
    //Appointment ends after the start of our range
                    + "AND (\"urn:schemas:calendar:dtstart\" &lt; '" + 
    Convert.ToDateTime("3-17-2007").Date.ToUniversalTime().ToString("yyyy/MM/dd HH:mm:ss") + "')
    //Appointment begins before the end of our range
                    + "AND (\"DAV:displayname\" like '" + "LS.ImportantDates." + "%' ) "
                    + "ORDER BY \"urn:schemas:calendar:dtstart\" "
                    + "</dav:sql>"
                    + "</dav:searchrequest>";
            //Provide credentials required to access the server. Here i used the NTLM
            MyCredentialCache = new System.Net.CredentialCache();
            MyCredentialCache.Add(new System.Uri(strCalendarUri), "NTLM", new System.Net.NetworkCredential(strUserName, strPassword, strDomain));
            //Create the HttpWebRequest object.
            WebDavRequest = (System.Net.HttpWebRequest)HttpWebRequest.Create(strCalendarUri);
            // Add the network credentials to the request.
            WebDavRequest.Credentials = MyCredentialCache;
            // Specify the PROPPATCH method.
            WebDavRequest.Method = "SEARCH";
            // Encode the body using UTF-8.
            bytes = Encoding.UTF8.GetBytes(query);
            // Set the content header length.
            WebDavRequest.ContentLength = bytes.Length;
            // Get a reference to the request stream.
            WebDavRequestStream = WebDavRequest.GetRequestStream();
            // Write the message body to the request stream.
            WebDavRequestStream.Write(bytes, 0, bytes.Length);
            // Release the connection
            // Set the content type header.
            WebDavRequest.ContentType = "text/xml";
           WebDavResponse = (System.Net.HttpWebResponse)WebDavRequest.GetResponse();
           Response.Write("Calendar : ");
      Response.Write("Status Code: " + WebDavResponse.StatusCode + "Description: " + WebDavResponse.StatusDescription);
           using (System.IO.StreamReader streamReader = new System.IO.StreamReader(WebDavResponse.GetResponseStream()))
         You can get more related samples and detailed information from Dan's blog. For more information you can also refer this article 
  • Le Café Central de DeVa

    Windows Phone 7’s latest update: 7.10.8107.79


    I got the latest Windows Phone update: 7.10.8107.79


    It fixes the following:

    • On-screen keyboard. Fixes an issue to prevent the keyboard from disappearing during typing.
    • Email. Fixes a Google mail syncing issue.
    • Location. Fixes a location access issue. With this fix, the Me feature in the People Hub sends anonymous information about nearby Wi-Fi access points and cell towers to Microsoft only if you agree to allow the Check In function to access and use location information.
    • Security. Revokes digital certificates from DigiCert Sdn Bhd to address an encryption issue.
    • Email threads. Fixes an email issue related to Microsoft Exchange Server 2003. With this fix, when you reply to or forward a message, the original message is now included in your response.
    • Voicemail. Fixes a voicemail notification display issue that occurs on some European and Asian networks under certain conditions

    To learn how to install updates, check if there's an update available for you to download, and determine which version of Windows Phone you have now, see Phone updates FAQ.

  • Le Café Central de DeVa

    TNEF &amp; Winmail.dat


    Issue with TNEF:

    The use of TNEF is commonly affected by settings in Outlook that are referred to as "Microsoft Outlook Rich Text Format." Rich Text Format and TNEF are not exactly the same, but they are closely related.

    A TNEF-encoded message contains a plain text version of the message, and a binary attachment that "packages" various other parts of the original message. In most cases, the binary attachment will be named Winmail.dat, and may include:

    The formatted text version of the message (font information, colors, and such)

    OLE objects (embedded pictures, embedded Office documents, and such)

    Special Outlook features (custom forms, voting buttons, meeting requests, and such)

    Regular file attachments that were added to the original message

    In addition to the information listed above, the path to your personal folders file (PST) file and your logon name are embedded in the winmail.dat file. Although this data is not explicitly exposed to the recipient, if the recipient opens the winmail.dat file for editing in a binary or text editor, he can see the path and logon name. Note that no password information is revealed. To ensure that the path to your PST file or your logon name is not included in the winmail.dat attachment, use the steps in this article to send mail that does not include winmail.dat.

    Some Outlook features require TNEF encoding to be understood correctly by an Internet e-mail recipient who also uses Outlook. For example, when you send a message with voting buttons to a recipient over the Internet, if TNEF is not enabled for that recipient, the voting buttons will not be received. Alternatively, for sending messages with regular file attachments, TNEF is not needed. If you are sending e-mail with file attachments to a recipient who does not use Outlook or the Exchange Client, you should manually choose to use a mail format that does not require TNEF (such as plain text). By not sending TNEF messages, the recipient will be able to view and save the attachments as expected.

    Issues when Send & Receiving mails:

    When a message containing TNEF information is received by a mail client that does not understand TNEF, there are three common results:

    The plain text version of the message is received and it contains an attachment named Winmail.dat. The Winmail.dat attachment does not contain any useful information when opened since it is in the special TNEF format.

    The plain text version of the message is received and it contains an attachment with a generic name such as ATT00008.dat or ATT00005.eml. In this case the client is unable to recognize the TNEF part of the message, and is unable to recognize the Winmail.dat file name, so it creates a file name to hold the TNEF information.

    The plain text version of the message is received and the client ignores the Winmail.dat attachment. This is the behavior found in Microsoft Outlook Express. Outlook Express does not understand TNEF, but it does know to ignore TNEF information. The result is a plain text message.

    In addition to the receiving client, it is not uncommon for a mail server to strip out TNEF information from mail messages as it delivers them. If a server option to remove TNEF is turned on, clients will always receive a plain text version of the message. Microsoft Exchange Server is an example of a mail server application that has the option to remove TNEF from messages.

    Internet Standards - Message Encoding:

    The Internet standards for encoding messages such as Multipart Internet Mail Extensions (MIME) and UUENCODE are used independently of TNEF. TNEF can exist in a MIME-encoded message as a MIME body part of type "application/ms-tnef," or in a UUENCODED message as an attachment named Winmail.dat.

    When a TNEF message is sent using MIME, an entry similar to the following is added to the message:


    Alternatively, if a TNEF message is sent using UUENCODE, information similar to the following is added to the bottom of the message:

    begin 600 WINMAIL.DAT M>)\^(C<.`0:0" `$```````!``$``0>0!@`(````Y 0```````#H``$%@ ,` M#@```,L'" `$``<`)P`O``4`0 $!"8 !`"$````S,S5$,C,W,#%"0T-#13$ [. . .]

    In either case, the TNEF encoding is sent to the recipient and must be understood by the receiving client to correctly display the encapsulated information.


    For more information, please read this article

    TNEF & Winmail.dat 

    Exchange Server 2003 uses transport neutral encapsulation format (TNEF) to convert MAPI messages to RFC 822 format. TNEF appears on a message as a MIME attachment of type application/ms-tnef. The attachment is called Winmail.dat. It contains the full message content and any attached files. Only MAPI clients, such as Outlook, are able to decode the Winmail.dat attachment. Non-MAPI clients are unable to decode TNEF and might show Winmail.dat as a typical, but useless file.

    Note: Recipients with mailboxes on an Exchange server, who use Internet clients to access their messages, are not considered non-MAPI recipients. This is because the Exchange store that hosts the mailboxes can produce the necessary RFC 822 content in non-MAPI format when users download MAPI messages from their Inboxes using a POP3 or an IMAP4 client. There are several possible Exchange-to-Exchange transfer scenarios that require MAPI to RFC 822 conversion:

    • Recipient is on an Exchange server in the same routing group   Exchange Server 2003 renders MAPI messages into Summary-TNEF (S/TNEF) format, a special kind of transport-neutral encapsulation format (TNEF), which has no plain text part and is rendered in eight-bit binary format. S/TNEF messages consist only of Winmail.dat.

    Note: Within a routing group, Exchange Server 2003 always uses S/TNEF, because in all remote delivery cases, the message is guaranteed to take either an SMTP hop directly to a server running Exchange 2000 Server or Exchange Server 2003 or go to the Exchange MTA. Exchange 2000 Server and Exchange Server 2003 support binary MIME. On the other hand, if the message is passed to the Exchange MTA for delivery to a server running Exchange Server 5.5 through RPCs, message conversion is not required, because the RFC 822 format is not used.

    • Recipient is on an Exchange server in another routing group and the Exchange organization is operating in native mode   Exchange Server 2003 renders MAPI messages into Summary-TNEF (S/TNEF) format, because in native mode an Exchange organization can include only servers running Exchange 2000 Server and Exchange Server 2003 that support binary MIME.

    • Recipient is on an Exchange server in another routing group and the Exchange organization is operating in mixed mode   In mixed mode, it is possible to use the Internet Mail Service of Exchange Server 5.5 as an SMTP connector, but Internet Mail Service does not support binary MIME. Because the RFC 822 representation of S/TNEF that IMAIL generates is binary MIME, Internet Mail Service is unable to transfer S/TNEF messages. Because the Exchange categorizer cannot detect beforehand what route a message will take, the categorizer does not convert the message to S/TNEF for a recipient that is on a server outside the local routing group in mixed mode. To accommodate a potential Internet Mail Service instance in the transfer path, the Exchange categorizer converts the message to a plain text part and an attachment in legacy TNEF, which is seven-bit MIME that Internet Mail Service, can transfer.

    • Recipient is a MAPI recipient outside the local Exchange organization    Users and administrators can enable the transfer of TNEF across the boundaries of the local Exchange organization for recipients in external messaging environments who use Outlook. Because the recipient is not in the local Exchange organization, the Exchange categorizer cannot determine if all SMTP hosts involved in the message transfer support binary MIME. Correspondingly, the Exchange categorizer converts the message to a plain text part and an attachment in legacy TNEF.

    Note: Non-MAPI recipients typically prefer to receive a message in plain text or HTML without TNEF, because their clients cannot decode the Winmail.dat file that includes the message and all attachments. TNEF encapsulation prevents non-MAPI clients from accessing attachments. Non-Microsoft tools, such as EPOC WMDecode for Windows, might be able to extract attachments from Winmail.dat files.

    • MAPI messages sent to public folders   Messages sent to public folders are always relayed in legacy TNEF format.
    • MAPI messages sent to an expansion server over SMTP   If a message contains a distribution list with an explicit expansion server that is not the local server, the message is forwarded to the expansion server in legacy TNEF format (if SMTP is used for message transfer). In this case, a property is transmitted in the message transfer envelope through XEXCH50 that notifies the expansion server of the time the message was originally received through the Exchange store driver. After the categorizer on the expansion server expands the distribution list, it must apply the effective RFC 822 message formats to the individual recipients. The categorizer uses the Exchange store driver to copy the message to the Exchange store, where IMAIL reads the TNEF data to construct a MAPI message with the submit time of the original message. The SMTP transport subsystem can then read the MAPI message from the store in an RFC 822 format consistent with the recipients' formatting requirements.

    You can control the TNEF format behavior for sending messages by adding the following registry key. The number nn represents the virtual server instance for this machine.


    HKey_Local_Machine\Software\Microsoft\Exchange\StoreDriver\Exchange\ nn \EnableTnef





    Value Data



    A value of 0x0 disables TNEF, and messages are generated without using TNEF. A value of 0x1 will generate a message using legacy TNEF when S/TNEF would ordinarily be generated. A value of 0x2 has no effect, as that is the default behavior.


  • Le Café Central de DeVa

    EWS : How to access user’s free/busy info programmatically using Exchange Web Services (EWS)?


    In this post, we will see how to access user free/busy information programmatically using Exchange Web Services (EWS) – Proxy. Exchange provides such a service by storing what is referred to as free/busy data. This information will indicate what requested time range is free, busy, and tentative for a particular user. It will also provide any out of office (oof) status as well. Free/Busy data can be obtained using the Availability service provided by the Exchange Server. This is simply a web service which obtains the free/busy data directly from a user’s calendar.

    Specifically, the GetUserAvailability operation will provide the free/busy state at specific level of detail.Using GetUserAvailability operation, which provides current user availability information at a specified level of detail - about the availability of a set of users, rooms, and resources within a specified time period. Client applications such as Microsoft Office Outlook, Microsoft Outlook Web Access, Microsoft Outlook Mobile Access, and other applications use SMTP addresses to identify the requested user information.

    Let start now by creating the binding, set the credentials/URL and pass the binding (esb) to the following functionality ( which I haven’t added here).

    Identify the time to compare free/busy information:

    Duration duration = new Duration();

    duration.StartTime = DateTime.Now;

    duration.EndTime = DateTime.Now.AddHours(4);

    Identify the options for comparing free/busy information:

    FreeBusyViewOptionsType fbViews = new FreeBusyViewOptionsType();

    fbViews.TimeWindow = duration;

    fbViews.RequestedView = FreeBusyViewType.MergedOnly;

    fbViews.RequestedViewSpecified = true;

    fbViews.MergedFreeBusyIntervalInMinutes = 35;

    fbViews.MergedFreeBusyIntervalInMinutesSpecified = true;

    Identify the user mailbox to review for free/busy data:
    MailboxData[] mbx=

    mbx[0] = new MailboxData();

    EmailAddress emailAddress = new EmailAddress();

    emailAddress.Address = "user1@domain.com";

    emailAddress.Name = String.Empty;

    mbx[0].Email = emailAddress;

    mbx[0].ExcludeConflicts = false;

    Make the request and set the time zone of the request:
    getusrRequest.TimeZone = newSerializableTimeZone();

    getusrRequest.TimeZone.Bias = 480;

    getusrRequest.TimeZone.StandardTime = newSerializableTimeZoneTime();

    getusrRequest.TimeZone.StandardTime.Bias = 0;

    getusrRequest.TimeZone.StandardTime.DayOfWeek = DayOfWeekType.Sunday.ToString();

    getusrRequest.TimeZone.StandardTime.DayOrder = 1;

    getusrRequest.TimeZone.StandardTime.Month = 11;

    getusrRequest.TimeZone.StandardTime.Time = "02:00:00";

    getusrRequest.TimeZone.DaylightTime = new SerializableTimeZoneTime();

    getusrRequest.TimeZone.DaylightTime.Bias = -60;

    getusrRequest.TimeZone.DaylightTime.DayOfWeek = DayOfWeekType.Sunday.ToString();

    getusrRequest.TimeZone.DaylightTime.DayOrder = 2;

    getusrRequest.TimeZone.DaylightTime.Month = 3;

    getusrRequest.TimeZone.DaylightTime.Time = "02:00:00";

    In addition to that, add the mailbox and the view options to the request
    getusrRequest.MailboxDataArray = mbx;

    getusrRequest.FreeBusyViewOptions = fbViews;

    Send the above request and get the response:
    GetUserAvailabilityResponseType getusrResponse = esb.GetUserAvailability(getusrRequest);

    Access the free/busy info:

    if(getusrResponse.FreeBusyResponseArray.Length < 1)


    Console.WriteLine("No free/busy response data available.");




    foreach(FreeBusyResponseType fbrt in getusrResponse.FreeBusyResponseArray)


    if(fbrt.ResponseMessage.ResponseClass == ResponseClassType.Error)


    Console.WriteLine("Error:" + fbrt.ResponseMessage.MessageText);




    FreeBusyView fbv = fbrt.FreeBusyView;

    Console.WriteLine("Merged free/busy data: " + fbv.MergedFreeBusy);




    If you run the above piece of code, then you will get the result:


    For more information, you can refer the following article: http://msdn.microsoft.com/en-us/library/aa564001(v=exchg.140).aspx

    Happy programming!!

  • 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

    Download: Windows 7 & Windows Server 2008 R2 Service Pack 1 (SP1)


    Windows 7 and Windows Server 2008 R2 SP1 helps keep your PCs and servers on the latest support level. It also provides ongoing improvements to the Windows Operating System (OS), by including previous updates delivered over Windows Update as well as continuing incremental updates to the Windows 7 and Windows Server 2008 R2 platforms based on customer and partner feedback. This enables organizations to deploy a single set of updates.

    Windows 7 and Windows Server 2008 R2 SP1 will help you:

    • Keep your PCs supported and up-to-date
    • Get ongoing updates to the Windows 7 platform
    • Easily deploy cumulative updates at a single time
    • Meet your users' demands for greater business mobility
    • Provide a comprehensive set of virtualization innovations
    • Provide an easier Service Pack deployment model for better IT efficiency

    Download: You can download it from the following link:


    Related articles: Also you can have a look at the following articles:

    For support and troubleshooting, you can anyone of the following:

  • Le Café Central de DeVa

    Outlook Issue: Task 'user@domain.com' reported error (0x80190193) : 'The operation failed.'


    One of my customer reported a Outlook UI related issue (not Dev issue), as it bugs them having this error every time they  hit the send/receive button. If they try to use Outlook 2010 Beta or Outlook 2007 SP2 generates the error below when doing a full send/receive and their client is connected to Exchange 2007 SP2.

    Error: Task 'user@domain.com' reported error (0x80190193) : 'The operation failed.'

    When we just looked into this, we found its taking us close to OAB synchronization and it fails - which points to, HTTP Error 403. This problem occurred as they enabled the Secure Sockets Layer (SSL) in the OAB directory in Internet Information Services (IIS) Manager.

    Customer tried the following steps, which resolved the issue.

    1. On the server that is running Exchange 2007 Client Access Server (CAS) and that hosts the OAB Web-based distribution point, click Start, click Run, and then type inetmgr.
    2. Expand Web Site, and then expand Default Web Site.
    3. Right-click the OAB virtual directory, and then select Properties.
    4. On the Directory Security tab, under the Secure Communications field, click Edit.
    5. Click to clear the Require secure channel (SSL) check box, and then click OK.
    6. At the command prompt, type iisreset.

    FYI: SSL is not required on the OAB virtual directory for domain-connected clients. This is because SSL is not required to download files only. This is the opposite of the default setting for the other Exchange services virtual directories.

  • Le Café Central de DeVa

    Error Code : List of ASP Error Codes & its description


    When i was searching for Classic ASP (not ASP.Net) related error code, i found the related information. Please find the list of ASP error codes that may be returned while an Active Server Pages (ASP) page is processing. This may vary depending on the version of Internet Information Services (IIS) that you use. This applies to IIS 3.0, 4.0, 5.0 & 6.0.

    ASP error code


    ASP 0100

    Out of memory

    ASP 0101

    Unexpected error

    ASP 0102

    Expecting string input

    ASP 0103

    Expecting numeric input

    ASP 0104

    Operation not Allowed

    ASP 0105

    Index out of range

    ASP 0106

    Type Mismatch

    ASP 0107

    Stack Overflow

    ASP 0108

    Create object failed

    ASP 0109

    Member not found

    ASP 0110

    Unknown name

    ASP 0111

    Unknown interface

    ASP 0112

    Missing parameter

    ASP 0113

    Script timed out

    ASP 0114

    Object not free threaded

    ASP 0115

    Unexpected error

    ASP 0116

    Missing close of script delimiter

    ASP 0117

    Missing close of script tag

    ASP 0118

    Missing close of object tag

    ASP 0119

    Missing Classid or Progid attribute

    ASP 0120

    Invalid Runat attribute

    ASP 0121

    Invalid Scope in object tag

    ASP 0122

    Invalid Scope in object tag

    ASP 0123

    Missing Id attribute

    ASP 0124

    Missing Language attribute

    ASP 0125

    Missing close of attribute

    ASP 0126

    Include file not found

    ASP 0127

    Missing close of HTML comment

    ASP 0128

    Missing File or Virtual attribute

    ASP 0129

    Unknown scripting language

    ASP 0130

    Invalid File attribute

    ASP 0131

    Disallowed Parent Path

    ASP 0132

    Compilation Error

    ASP 0133

    Invalid ClassID attribute

    ASP 0134

    Invalid ProgID attribute

    ASP 0135

    Cyclic Include

    ASP 0136

    Invalid object instance name

    ASP 0137

    Invalid Global Script

    ASP 0138

    Nested Script Block

    ASP 0139

    Nested Object

    ASP 0140

    Page Command Out Of Order

    ASP 0141

    Page Command Repeated

    ASP 0142

    Thread token error

    ASP 0143

    Invalid Application Name

    ASP 0144

    Initialization Error

    ASP 0145

    New Application Failed

    ASP 0146

    New Session Failed

    ASP 0147

    500 Server Error

    ASP 0148

    Server Too Busy

    ASP 0149

    Application Restarting

    ASP 0150

    Application Directory Error

    ASP 0151

    Change Notification Error

    ASP 0152

    Security Error

    ASP 0153

    Thread Error

    ASP 0154

    Write HTTP Header Error

    ASP 0155

    Write Page Content Error

    ASP 0156

    Header Error

    ASP 0157

    Buffering On

    ASP 0158

    Missing URL

    ASP 0159

    Buffering Off

    ASP 0160

    Logging Failure

    ASP 0161

    Data Type Error

    ASP 0162

    Cannot Modify Cookie

    ASP 0163

    Invalid Comma Use

    ASP 0164

    Invalid TimeOut Value

    ASP 0165

    SessionID Error

    ASP 0166

    Uninitialized Object

    ASP 0167

    Session Initialization Error

    ASP 0168

    Disallowed object use

    ASP 0169

    Missing object information

    ASP 0170

    Delete Session Error

    ASP 0171

    Missing Path

    ASP 0172

    Invalid Path

    ASP 0173

    Invalid Path Character

    ASP 0174

    Invalid Path Character(s)

    ASP 0175

    Disallowed Path Characters

    ASP 0176

    Path Not Found

    ASP 0177

    Server.CreateObject Failed

    ASP 0178

    Server.CreateObject Access Error

    ASP 0179

    Application Initialization Error

    ASP 0180

    Disallowed object use

    ASP 0181

    Invalid threading model

    ASP 0182

    Missing object information

    ASP 0183

    Empty Cookie Key

    ASP 0184

    Missing Cookie Name

    ASP 0185

    Missing Default Property

    ASP 0186

    Error parsing certificate

    ASP 0187

    Object addition conflict

    ASP 0188

    Disallowed object use

    ASP 0189

    Disallowed object use

    ASP 0190

    Unexpected error

    ASP 0191

    Unexpected error

    ASP 0192

    Unexpected error

    ASP 0193

    OnStartPage Failed

    ASP 0194

    OnEndPage Failed

    ASP 0195

    Invalid Server Method Call

    ASP 0196

    Cannot launch out of process component

    ASP 0197

    Disallowed object use

    ASP 0198

    Server shutting down

    ASP 0199

    Disallowed object use

    ASP 0200

    Out of Range 'Expires' attribute

    ASP 0201

    Invalid Default Script Language

    ASP 0202

    Missing Code Page

    ASP 0203

    Invalid Code Page

    ASP 0204

    Invalid CodePage Value

    ASP 0205

    Change Notification

    ASP 0206

    Cannot call BinaryRead

    ASP 0207

    Cannot use Request.Form

    ASP 0208

    Cannot use generic Request collection

    ASP 0209

    Illegal value for TRANSACTION property

    ASP 0210

    Method not implemented

    ASP 0211

    Object out of scope

    ASP 0212

    Cannot Clear Buffer

    ASP 0214

    Invalid Path parameter

    ASP 0215

    Illegal value for ENABLESESSIONSTATE property

    ASP 0216

    MSDTC Service not running

    ASP 0217

    Invalid Scope in object tag

    ASP 0218

    Missing LCID

    ASP 0219

    Invalid LCID

    ASP 0220

    Requests for GLOBAL.ASA Not Allowed

    ASP 0221

    Invalid @ Command directive

    ASP 0222

    Invalid TypeLib Specification

    ASP 0223

    TypeLib Not Found

    ASP 0224

    Cannot load TypeLib

    ASP 0225

    Cannot wrap TypeLibs

    ASP 0226

    Cannot modify StaticObjects

    ASP 0227

    Server.Execute Failed

    ASP 0228

    Server.Execute Error

    ASP 0229

    Server.Transfer Failed

    ASP 0230

    Server.Transfer Error

    ASP 0231

    Server.Execute Error

    ASP 0232

    Invalid Cookie Specification

    ASP 0233

    Cannot load cookie script source

    ASP 0234

    Invalid include directive

    ASP 0235

    Server.Transfer Error

    ASP 0236

    Invalid Cookie Specification

    ASP 0237

    Invalid Cookie Specification

    ASP 0238

    Missing attribute value

    ASP 0239

    Cannot process file

    ASP 0240

    Script Engine Exception

    ASP 0241

    CreateObject Exception

    ASP 0242

    Query OnStartPage Interface Exception

    ASP 0243

    Invalid METADATA tag in Global.asa

    ASP 0244

    Cannot Enable Session State

    ASP 0245

    Mixed usage of Code Page values

    ASP 0246

    Too many concurrent users. Please try again later.

    ASP 0247

    Bad Argument to BinaryRead.

    ASP 0248

    Script isn't transacted. This ASP file must be transacted in order to use the ObjectContext object.

    ASP 0249

    Cannot use IStream on Request. Cannot use IStream on Request object after using Request.Form collection or Request.BinaryRead.

    ASP 0250

    Invalid Default Code Page. The default code page specified for this application is invalid.

    ASP 0251

    Response Buffer Limit Exceeded. Execution of the ASP page caused the Response Buffer to exceed its configured limit.

  • Le Café Central de DeVa

    Customizing OWA 2007 language settings


    With the continuation of the previous blogpost, today we’re going to see how we can use Microsoft Office Outlook Web Access or the Exchange Management Shell to configure language settings for Outlook Web Access in Microsoft Exchange Server 2007. Microsoft have provided various options to customize the OWA pages, contents/images/themes in a simpler way. As a part of that, we cam make sure that we can do the language setting for OWA, which determines the language of the Outlook Web Access logon page and error messages, and can be changed by the user at any time.

    There are three language settings that you can configure for Outlook Web Access.

    1. The logon and error language setting applies to individual Outlook Web Access virtual directories. The logon and error language is the language that will be used for errors and the forms-based authentication logon page. If a value is not set for this language, the default value is 0. This means that the default logon and error language is not defined. Note: If the logon and error language is not defined, Outlook Web Access will default first to the language set on Internet Explorer on the client computer. If the language set on Internet Explorer on the client computer is not supported by Outlook Web Access, Outlook Web Access will use the language of the Client Access server.
    2. The default client language setting applies to individual Outlook Web Access virtual directories. The default client language is the client language that is used by Outlook Web Access unless the user uses Regional Settings in Outlook Web Access to change the language and time zone. The default value for this setting is 0. This means the default client language is not defined. If the default client language is not defined, users will be prompted to choose a language and time zone the first time that they log on to Outlook Web Access. If the default client language value is defined, users will not be prompted to choose a language and the Outlook Web Access time zone will use the time zone of the Client Access server. Note: Defining the default client language causes the default folders to be renamed based on the specified language. Users can change the client language and time zone by using Regional Settings in Outlook Web Access, and can rename the default folders after they log on.
    3. The client languages are set on individual mailboxes and affect the language that is used in Outlook and Outlook Web Access. If multiple languages are configured, the first language in the list that is supported by the Web browser will be used. Note: If none of the languages in the default languages list is supported by the Web browser, the Client Access server language will be used.


    • In order to modify the various attributes in OWA Virtual directory, you need to use Set-OwaVirtualDirectory cmdlet to modify the properties of Outlook Web Access virtual directories on a computer that is running Microsoft Exchange Server 2007 that has the Client Access server role installed.
    • In order to modify the settings of an existing mailbox we need to use the Set-Mailbox cmdlet. You can use this cmdlet for one mailbox at a time.
    • To perform bulk management, you can pipeline the output of various Get- cmdlets (for example, the Get-Mailbox or Get-User cmdlets) and configure several mailboxes in a single-line command. You can also use the Set-Mailbox cmdlet in scripts

    How to do OWA Customization for…

    How to use the Outlook Web Access client to configure language settings ?

    1. Use a Web browser to access Outlook Web Access.

    2. Click Options, and then click Regional Settings.

    3. Under Language, in the Choose language list, click the language that you want to use.

      Note: The language that you select will determine the date and time settings in the Date and Time Formats section.

    4. Click Save to save your language settings.


    How to use the Exchange Management Shell to configure the logon and error language settings for Outlook Web Access ?

    1. Run the following command to set the logon and error language setting:

      Set-OwaVirtualDirectory -identity "Owa (Default Web Site)" -LogonAndErrorLanguage <language code>

    How to use the Exchange Management Shell to configure the default client language setting for an Outlook Web Access virtual directory ?

    1. Run the following command to set the default client language setting:

      Set-OwaVirtualDirectory -identity "Owa (Default Web Site)" -DefaultClientLanguage <language code>

    How to use the Exchange Management Shell to configure the client languages setting for an individual mailbox ?

    1. Run the following command to set the client languages setting for an individual mailbox:

      Set-Mailbox -identity <mailbox identity> -languages <language code>

  • Le Café Central de DeVa

    Outlook 2007 / MS CRM : Access denied error - [0x80070005-0x80070005-0x000508]


    Whenever we send any email from the Outlook client (Outlook 2007) & MS CRM the email bounces back undeliverable with the following message:

    This message could not be sent. Try sending the message again later, or contact your network administrator. You do not have sufficient permission to perform this operation on this object. See the folder contact or your system administrator. Error is [0x80070005-0x80070005-0x000508].

    The above error code is "Windows General Access Denied" message.

    When we investigated and found that,

    • It's due to "permissions issue" in the "Exchange Organization object" in "Active Directory". In our scenario the error thrown to the Outlook Client, when it tries to attempt to access MessageID from Exchange and failing.
  • 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

    Server side rule Vs. Client Side rule


    When we work with customers, quite often they want to know, what is this server/client side stuff, all about?

    When you use Outlook 2003 with Microsoft Exchange Server 2003, you can use both server-based and client-side rules. This small article talks about the differences, functions of server side rules vs. client side rules.

    Server-based rules can be processed on the server.

    For example, a user who uses the mailbox for the delivery location might have a rule that deletes all e-mail messages from a specific alias. Because both the Inbox and the Deleted Items folder are stored on the server, the rule can be processed there without interaction from the client.

    Client-side rules require some processing by the client.

    For example, a user has a personal folder (.pst) file where e-mail messages of certain types are stored. The .pst file uses a rule that moves all e-mail messages from a specific alias to that folder. In this case, the server cannot perform all the processing because the .pst file is located on the local computer and can be accessed only by Outlook 2003 and not by Exchange Server. Exchange Server 2003 creates a deferred action item on the server that runs the next time that files are synchronized. Because users must run deferred actions, client-side rules may have a very big effect on system performance, particularly when they work over slower connections.

  • Le Café Central de DeVa

    Download : Using MS Excel Template to track FIFA 2010 World Cup schedules


    From today onwards FIFA World cup 2010 going to start and there is already a lot of craze among the soccer fans across the world. Being a hardcore soccer fan, you can find a nice way to keep a schedule of all the matches in your hard drive using Microsoft Excel.

    I am pretty sure that usually we need to maintain schedules either in paper or checking internet every time, but do you know being computer savy we can use most of it? Yes, you can.

    This initiative is done by Diego, a Microsoft employee who created the Excel template which can be used to keep track of all the upcoming world cup games, venues, league matches, match timings and also the points table.

    Ok, here is how the template looks:

    Screenshot of Excel template

    Download: You  can download the Microsoft Excel template (2007 or later) from http://office.microsoft.com/en-us/templates/TC103911551033.aspx?pid=CT101436151033&AxInstalled=1&c=0

    Enjoy the soccer!!

  • Le Café Central de DeVa

    Download Microsoft Exchange Web Services (EWS) Managed API 1.0 Beta


    If you’re developer who use Microsoft Exchange Web Services to develop client applications, then this is for you to download and play around with it.

    The Microsoft Exchange Web Services (EWS) Managed API 1.0 Beta 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.

    It’s available for both 32 and 64 bit environments:
    For x64 (64-bit) computers, download and run EwsManagedApi.msi
    For x86 (32-bit) computers, download and run EwsManagedApi32.msi

    It can be downloaded from Microsoft Download Center.

  • Le Café Central de DeVa

    Tutorial : Organizational Forms Library - Series # 2


    Can we create it programmatically?

    To create it programmatically using MAPI, we need to make use of CreateFolder(), the MAPI function. It is necessary to have very special privileges (obtained by opening the store with an EntryID created using IExchangeManageStore::CreateStoreEntryID()) to get it to work.

    Please refer the following KB to create Org. forms library programmatically.

    How to create Org. Forms Library in Exchange Server 2003 ?

    To create a new Organizational Form in Exchange Server 2003, please follow the steps given below:

    1. Start Exchange System Manager.

    2. Expand the Organization object. Expand your Administrative Group.

    3. Expand Folders. Right-click Public Folders.

    4. Click View System Folders.

    5. In the list of folders present in the right-hand pane, click the EFORMS Registry folder.

    6. Right-click the EFORMS Registry folder, then click New. Click Organizational Form.

    7. Enter a name for your Organizational Form, and then click OK.

    8. Repeat these steps for multiple forms to create the library.

    How to create copies of organizational forms library?

    In Exchange Server 2003, to create copies of the Organizational Forms Library on other servers, click the Replication tab, and then type the name of server that you want to contain the copy of the Organizational Forms Library.

    2) How to set the storage limits for an organizational forms library?

    To set storage limits for an Organizational Forms Library, click the Limits tab. To create a description of an Organizational Forms Library, click the Details tab. To set permissions for each user, click the Permissions tab.

    How to create Org. Forms Library in Exchange Server 2007 ?

    Per the KB, you need to follow the following method to create an Organizational Forms Library as it got changed in Exchange 2007.

    To create an Organizational Forms Library in Exchange 2007, follow these steps.

    1. Create a new public folder.

    a. Click Start, point to All Programs, click Microsoft Exchange Server 2007, and then click Exchange Management Shell.

    b. Run the following command at the Exchange Management Shell prompt:
    New-PublicFolder -Path "\NON_IPM_SUBTREE\EFORMS REGISTRY" -Name "My Organizational Forms Library"

    Note: You can use the Exchange management shell on any version of Exchange 2007 to create a folder. However, in Exchange 2007 SP1, you can also create the EFORMS REGISTRY folder by following these steps:

                a. Go to Toolbox in Exchange Management Console. Double-click Public Folder Management Console.

                b. In the left pane, click System Public Folders.

                c. in the Action pane, click New Public Folder. Type EFORMS REGISTRY as the folder name, and then click NEW.

                d. After the folder is created, click Finish to exit the wizard.

    2. Add the PR_EFORMS_LOCALE_ID.

    a. Use an account that belongs to the Exchange Administrators Group to log on to a client computer that is running Microsoft Office Outlook 2003 or a later version of Microsoft Outlook.

    b. Start the Microsoft Exchange Server MAPI Editor (Mfcmapi.exe) from the MFCMAPI folder.

    c. Create a MAPI profile if it is necessary.

    d. On the Session menu, click Logon and Display Store Table.  Select MDB menu, click Open Public Folder Store, and then click OK.

    e. Expand Public Root, expand NON_IPM_SUBTREE, and then expand EFORMS REGISTRY.

    f. Click the public folder that you created in step 1. For example, click My Organizational Forms Library.

    g. Click the PR_URL_NAME property. On the Property Pane menu, click Modify Extra Properties. Click Add, and then click Select Property Tag.

    h. Click PR_EFORMS_LOCALE_ID in the list, and then click OK. Click OK two times. A red mark is displayed next to the newly created PR_EFORMS_LOCALE_ID property.

    i. Double-click PR_EFORMS_LOCALE_ID. In the Unsigned Decimal box, type the desired locale ID, and then click OK. For example, type 1033 for English, type 1040 for Italian, or type a different ID for a different locale.
    Note: To determine the locale ID for other locales, visit the following Microsoft Web site: http://msdn2.microsoft.com/en-us/library/aa579489.aspx (http://msdn2.microsoft.com/en-us/library/aa579489.aspx)

    j. Exit MAPI Editor.

    3. Configure limits and permissions for the Organizational Forms Library folder. Note: You can use suitable cmdlets in the Exchange Management Shell to set limits and permissions for the Organizational Forms Library folder.

    a. To set storage limits, use the following cmdlet: Set-PublicFolder

    b. To set permissions for each user, use the following cmdlets: Add-PublicFolderClientPermission, Add-PublicFolderAdministrativePermissions

  • Le Café Central de DeVa

    Xbox Kinect : 17 Controller-free games launch in November


    Anticipation for Kinect swells with sold-out pre-orders, ad campaign launch, special appearances on two of America’s top daytime talk shows. Today, the countdown to Kinect begins, as Microsoft Corp. announced the launch of a multiyear advertising campaign and revealed the complete line-up of 17 controller-free games that will transform living rooms around the world starting on Nov. 4.

    With 17 Kinect-enabled titles debuting in November, Kinect for Xbox 360 offers something for gamers (and nongamers) of every stripe.

    “Kinect Adventures” (Good Science Studio/Microsoft Game Studios), included with every Kinect sensor
    Float in outer space. Experience the thrill of roaring rapids. Tackle mountaintop obstacle courses. And dive into the deep sea to save a leaky underwater observatory — all from your living room. With “Kinect Adventures,” you are the controller as you jump, dodge and kick your way through exciting adventures set in a variety of exotic locations. “Kinect Adventures” is designed with something for everyone to enjoy and will be available with every Kinect sensor and Kinect bundle sold.

    “Kinectimals” (Frontier Developments Ltd./Microsoft Game Studios), limited collector edition.
    “Kinectimals” invites children, their parents and animal lovers of all ages to build lasting friendships with some of the world’s most exotic creatures. Just like real pets, your feline cubs will come running when they hear your voice, respond to commands such as “jump,” “roll over” and “play dead,” and purr with joy when you scratch them behind their ears. Limited collector’s editions of the “Kinectimals” game packaged with a 7” plush toy that unlocks a new animal and toy in the game will be available exclusively at Toys “R” Us and GameStop.

    “Game Party™: In Motion” (Warner Bros. Interactive Entertainment)
    The popular party game value series comes to Kinect for Xbox 360. “Game Party: In Motion” lets players engage in true-to-life motions with 16 games appealing to people of all ability levels, ranging from sports such as Hoop Shoot and Darts to arcade and party games, including Rootbeer Tapper, Table Hockey and more.

    “Harry Potter and the Deathly Hallows — Part 1 The Videogame” (Electronic Arts/EA Bright Light)
    “Harry Potter and the Deathly Hallows Part 1 The Videogame” is the most challenging yet, packed from start to finish with action and combat. Playing as Harry, you are on the run from the opening sequence, fighting for survival on a desperate and dangerous quest to locate and destroy Voldemort’s Horcruxes. And with 22 exclusive Kinect challenges, conjure the weapons of magical warfare where your motions make the magic, only on Xbox 360.

    “Your Shape™: Fitness Evolved” (Ubisoft)
    With Kinect for Xbox 360 and “Your Shape: Fitness Evolved,” you will experience the most advanced fitness technology available, your way and on your schedule. The advanced feedback system detects when your body is out of alignment and coaches you to correct your form. Personalize your workout, challenge your friends and share your progress while achieving real results.

    “Dance Central” (MTV Games/Harmonix)
    From the creators of “Rock Band” comes the next great music experience: “Dance Central,” the first controller-free, body tracking, fully immersive dance video game that helps you take your moves to the next level. Featuring more than 90 routines and 650 dance moves, every routine has authentic choreography for beginners and experts alike to master, alongside a killer soundtrack that spans today’s current pop, hip-hop and R&B artists. You won’t just learn the dance moves — you’ll own the dance floor.

    “The Biggest Loser Ultimate Workout” (THQ)
    Based on the hit television show, “The Biggest Loser Ultimate Workout” comes to Kinect offering the ultimate workout experience. Complete your fitness program using the interactive motion control sensors providing real-time feedback. From a body analyzer and recipes to personalized tips and a video diary to track your journey, “The Biggest Loser Ultimate Workout” fitness game has it all to drop the weight and change your life.

    “DanceMasters” (Konami)
    The pioneer of the franchise that started the dance game craze, Konami introduces a brand new way to experience music and rhythm. The next generation in full-body dancing is finally here.

    “EA SPORTS Active 2” (EA SPORTS)
    EA SPORTS Active 2” with Total Body Tracking will combine motion tracking from Kinect and heart rate data from the included wireless heart rate monitor to provide true fitness results. Users will be able to track and share their workout data online through automatic uploading from their online connected Xbox 360 consoles to their personalized EA SPORTS Active profile.

    “Zumba Fitness®” (Majesco)
    Join the party with “Zumba Fitness,” a one-of-a-kind, dance fitness workout set to sexy, high-energy Latin and international music. Find your rhythm and let go as “Zumba” instructor fan favorites Gina Grant, Tanya Beardsley and “Zumba” creator, Beto, guide you through 30 routines that will work you into a sweat and make you forget you’re even exercising.


    “Kinect Sports” (Rare/Microsoft Game Studios)
    The first full-body, controller-free sports game that lets you physically compete with friends over Xbox LIVE, “Kinect Sports” is so real, you will almost feel the wind in your hair as you fly over hurdles and the sand in your toes as you set, bump and spike your way to volleyball victory. With six full sports — Soccer, Beach Volleyball, Track & Field, Boxing, Bowling and Table Tennis — “Kinect Sports” is the only title with a Team vs. Team mode, allowing the whole family to play in a fast-paced tournament style competition.

    “MotionSports™” (Ubisoft)
    Grab your friends and rush the living room, it is time to catapult into the wide world of “MotionSports.” Race down the slopes of a Super G slalom, score a mind-blowing penalty kick, duck-and-run your way to a game-winning touchdown, or throw punches at the champ as you test your skills in more than 40 awesome sports challenges. The “MotionSports” live in-game commentary will follow your hits and misses, as you compete to go from local hero to a global sports phenomenon.

    “DECA SPORTS FREEDOM” (Hudson Entertainment)
    Hudson Entertainment is taking sports to the next level with 10 sporting events you play using your own body in “DECA SPORTS FREEDOM.” No controller necessary — just move yourself as if you were playing the sport in real life. Spin, throw and smash your way to victory across all of the included events: tennis, boxing, archery, paintball, beach volleyball, dodge ball, kendo, mogul skiing, snowboard cross, and even figure skating.

    “Kinect Joy Ride” (Big Park/Microsoft Game Studios)
    “Kinect Joy Ride,” the first controller-free racing game, will take you and your friends on the ride of your lives — no driver’s license required. “Kinect Joy Ride” combines wild kart-racing excitement with the effortless fun of full-body gaming possible only with Kinect for Xbox 360. Go solo or compete with up to eight players over Xbox LIVE to take on the world.

    “Adrenalin Misfits” thrusts gamers into unbelievable fantasy worlds with exciting, sideways-stance boarding battles in amazing environments. It's not just a race, it’s a battle!

    “Fighters Uncaged” (Ubisoft)
    Charge head-first into the vicious world of illegal free-fighting tournaments, where you will use every muscle in your body to battle your way to the top. Forced into a secret tournament, Simon must use what he learned from his father, an ex-boxing champ, as he faces off against violent combatants who will brutally unleash a range of mixed martial arts attacks to take him down. No guns. No blades. Your body is the deadly weapon.

    Sonic is speeding onto Kinect for Xbox 360 in an action-packed experience unlike any other. Become your favourite character as you jump on your board and compete in adrenaline-fuelled races against tough competition. For the first time use full-motion body control to twist and turn your way through a range of stunning courses.

    For more information, visit http://www.kinectholiday.com and Microsoft News Center’s Press Pass. Also follow Kinect on Facebook as we tour the world, transforming how people experience games and entertainment. More information is available at http://www.facebook.com/xbox.


    Are you ready for the party?

  • Le Café Central de DeVa

    Non-Dev : How to disable “Reply to all” button in Outlook 2007 using ADM templates?


    Take a scenario,  there are some email messages where recipients shouldn’t be allowed to ‘Reply to all’ or something important to block “Reply All” feature to get replies from a big distribution list (DL). I found that there is a way in Outlook 2007 to disable the option and prevent users from using it.I tried disabling “Reply to all” button for the email items in Outlook 2007 using ADM templates (non-developer perspective).

    I used the following steps to get things done:

    • Download the admin templates from http://www.microsoft.com/downloads/details.aspx?FamilyId=92D8519A-E143-4AEE-8F7A-E4BBAEBA13E7&displaylang=en
    • Extract the templates into a directory
    • Modify the outlk12.adm file with the following changes
    • Goto line 2459 (KEYNAME Software\Policies\Microsoft\Office\12.0\Outlook\Security
    • Move the line VALUENAME PromoteErrorsAsWarnings below this line (it should located under VALUEOFF NUMERIC 0 which causes an error when Group Policy reads the file)
    • Find the line CATEGORY !!L_Disableitemsinuserinterface
    • Add the following lines immediately after that line (this will add the ability to disable the Reply to All button)
    • POLICY "Disable command bar buttons and menu items"
      KEYNAME Software\Policies\Microsoft\Office\12.0\Outlook\DisabledCmdBarItemsList
             PART "Enter a command bar ID to disable" LISTBOX
             END PART
             END POLICY
    • Create a GPO
    • Add the outlk12.adm template
    • Browse to Microsoft Office Outlook 2007\Disable items in user interface
    • Open the Properties for Disable command bar buttons and menu items image
    • Enable this object and select “Apply” and “OK”. The "state" of the policy should now show as Enabled.
    • Click the Show button and Add 355
    • You will be returned to the Show Contents page which should now resemble the following. Click OK.
  • Le Café Central de DeVa

    Combining SQL Server tables and Exchange Web Services


    Have you tried programmatically combining the two powerful enterprise tools: SQL Server 2005 (table-valued user-defined functions) with Exchange Server 2007(Exchange Web Services)?Combining SQL Server 2005 (table-valued user-defined functions)  with Exchange Server 2007 (Exchange Web Services) I followed the Microsoft article written by Jim Kleewein and Ray Dixon, which talks about how we can combine the SQL Server tables and Exchange Web Services to provide data from both Microsoft Exchange and SQL Server to client applications so that the data appears as if it were stored in SQL Server.

    SQL Server tables:

    Table-valued user-defined functions in SQL Server return a table, much like a SQL Server view, but provide for much more powerful logic.

    Exchange Web Services:

    Exchange Web Services in Exchange 2007 provides access to Exchange store items and information, such as message, contact, task, and calendar items and availability information.

    SQL Server tables & SQL Server tables:

    When you combine these technologies, you have a formidable new way to integrate, search, and analyze your Microsoft Exchange messaging data by using the full power of SQL Server, and to combine that messaging data with virtually any other data managed by, or available from, SQL Server.

    Still, what you can achieve?

    Per the article, by combining these technologies, you can:

    • Correlate information that is stored in Microsoft Exchange (messages, contacts, calendar items, tasks, and so on) with customer relationship management (CRM) data that is stored in SQL Server.
    • Join Microsoft Exchange contacts data with sales data.
    • Combine messaging data with any SQL Server data; for example, combine e-mail with call center data for customer support.
    • Correlate information from different calendar resources.
    • Add a subset of messaging data to a SQL Server data repository.

    This list provides some ideas, but is not all-inclusive.

    How can i start to create a sample or with an existing sample to see how it works?

    I found a downloadable sample demonstrates a powerful integration of Microsoft® Exchange Server 2007 and Microsoft SQL Server™ 2005 features. This integration enables you to provide data from both Microsoft Exchange and SQL Server to client applications so that the data appears as if it were stored in SQL Server.


    • To execute the sample, you need to have Exchange Server 2007 along with Client Access server role (CAS ) enabled, SQL Server 2005 & VS2005 to modify or build the sample
    • This sample is designed to work with the following authentications SQL Server Authentication, SQL Server user authentication and UserId with Password authentication.
    • Per the above article, this sample is intended for instructional purposes only and is not meant to be used in a production environment.
    • Once you downloaded the sample and if you are currently running Windows Vista, save the ExchangeUDF.exe file locally before you run it. To extract the files, right-click the executable and select Run as administrator.

    So what will be the process workflow for it?
    Per the article, it talks about the following SQL Server tables and Exchange Server workflow. The following figure shows the process that the SQL Server Tables and Exchange Web Services sample with the following steps:

    1. The user requests information from the computer that is running Microsoft SQL Server.
    2. The computer that is running SQL Server acts as a Microsoft Exchange client by requesting data from the Client Access server by using Exchange Web Services.
    3. The Client Access server communicates with the Microsoft Exchange computer that is running the Unified Messaging server role or the user to request the specified data from the mailbox for the user.
    4. The Unified Messaging server responds to the request.
    5. The Client Access server returns the response to the computer that is running SQL Server by using Exchange Web Services.
    6. The computer that is running SQL Server combines the requested Microsoft Exchange data with the requested SQL Server data and returns the single set of data to the user.

    Just i tried this. So, what are you waiting then, please follow through the above articles and practices mentioned there. I am sure you’ll love this…

Page 3 of 29 (706 items) 12345»