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

    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

    Admin: How to remove retention policy from Outlook/Exchange?


    ·To remove retention policy from Outlook:

    When you remove a retention policy from an email message, the folder policy applies to the item, if one is assigned.

    1. In the message list, click a message. (To select more than one message, press and hold CTRL as you click each message.)

    2. On the Home tab, in the Tags group, click Assign Policy.


    3. Under Retention Policy, click Use Folder Policy.

    Note: The retention policy for a message appears in the header in the Reading Pane under the recipient names and includes the expiration date. If no retention policy is applied, no information appears under the message recipient names.

    From Exchange:

    You can use the following exchange cmdlet: http://technet.microsoft.com/en-us/library/dd297962.aspx. Please note that the retention policies are used to apply message retention settings to folders and items in a mailbox.

    The below cmdlet removes an existing retention policy "Business Critical", which is assigned to users, and suppresses the confirmation prompt.

    > Remove-RetentionPolicy -Identity "Business Critical" -Confirm:$false -Force

  • 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

    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

    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

    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

    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

    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

    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

    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

    New Outlook Hotmail Connector 14.0 (Outlook Connector) for Outlook 2010 Beta


    I am an avid fan of using MS Outlook connector with previous versions of Outlook. Earlier when i was using Outlook Connector 12.1, i can manage my Windows Live Hotmail e-mail, calendar, and contacts from within Outlook.  Recently i read blog post by Alessio, that MS had announced the Beta release of Microsoft Outlook Hotmail Connector 14.0 (previously called Outlook Connector) in parallel with the Outlook 2010 Beta. It’s really a nice thing to hear.

    What’s new? Outlook Hotmail Connector 14.0 Beta is compatible with Outlook 2003 and 2007, and will replace Outlook Connector 12.1 upon release and provides an improved authentication and synchronization experience.

    Better with Outlook 2010: With Outlook Hotmail Connector 14.0 and Outlook 2010, you gain these additional benefits:

    • Junk filter settings Your Safe Sender List/Blocked sender list/Safe Recipient lists are synchronized between Outlook and Hotmail.
    • Integrated Send/Receive Send/receive works like your other Outlook accounts.
    • Integrated connection status Your Hotmail account status appears in the Outlook status bar.
    • Rule support for secondary accounts Rules work with the Hotmail account in Outlook even if it’s not your primary account.

    Where to download & use the Outlook Hotmail Connector 14.0 Beta: To download the Outlook Hotmail Connector 14.0 Beta manually, go to the Microsoft Download Center.

    Outlook Hotmail Connector 14.0 for Outlook 2003, 2007 and 2010 32-bit

    Outlook Hotmail Connector 14.0 for Outlook 2010 64-bit

    Try this out. Start enjoy with Hotmail Connector and save more time!!

  • 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

    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

    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

    Creating Outlook Calendar Folder using WebDAV &amp; C#.Net


    Code snippet to create Outlook Calendar Folder using WebDAV & C#.Net

    // TODO: Replace with the URL of an object on Exchange Server
            string sUri = "http://ExchServer/Exchange/Administrator/Inbox/NewApptFolder";
            System.Uri myUri = new System.Uri(sUri);
            HttpWebRequest HttpWRequest = (HttpWebRequest)WebRequest.Create(myUri);

            string sQuery;
            sQuery = "<?xml version='1.0'?>" +
              "<a:propertyupdate xmlns:a='DAV:' " +
              "xmlns:ex='http://schemas.microsoft.com/exchange/'>" +
              "<a:set><a:prop>" +
              "<ex:outlookfolderclass>IPF.Appointment</ex:outlookfolderclass>" +
              "</a:prop></a:set>" +

            // Set Credentials
            // TODO: Replace with appropriate user credentials

            NetworkCredential myCred = new NetworkCredential(@"DomainName\UserName", "UserPassword");
            CredentialCache myCredentialCache = new CredentialCache();
            myCredentialCache.Add(myUri, "Basic", myCred);
            HttpWRequest.Credentials = myCredentialCache;

            // Set Headers
            HttpWRequest.KeepAlive = false;
            HttpWRequest.Headers.Set("Pragma", "no-cache");
            HttpWRequest.ContentType =  "text/xml";
            HttpWRequest.ContentLength = sQuery.Length;

            //Set the request timeout to 5 minutes
            HttpWRequest.Timeout = 300000;
            // Set the request method
            HttpWRequest.Method = "MKCOL";

            // Store the data in a byte array
            byte[] ByteQuery = System.Text.Encoding.ASCII.GetBytes(sQuery);
            HttpWRequest.ContentLength = ByteQuery.Length;
            Stream QueryStream = HttpWRequest.GetRequestStream();
            // Write the data to be posted to the Request Stream

            // Send Request and Get Response
            HttpWebResponse HttpWResponse = (HttpWebResponse)HttpWRequest.GetResponse();

            // Get the Status code
            int iStatCode =  (int)HttpWResponse.StatusCode;
            string sStatus = iStatCode.ToString();
            Console.WriteLine("Status Code: {0}", sStatus);
            // Get the request headers
            string sReqHeaders = HttpWRequest.Headers.ToString();

            // Read the Response Steam
            Stream strm = HttpWResponse.GetResponseStream();
            StreamReader sr = new StreamReader(strm);
            string sText = sr.ReadToEnd();
            Console.WriteLine("Response: {0}", sText);

            // Close Stream

            // Clean Up
            myCred = null;
            myCredentialCache = null;
            HttpWRequest = null;
            HttpWResponse = null;
            QueryStream = null;
            strm = null;
            sr = null;

    Note: This code snippet shows how to use WebDAV to create a Microsoft Outlook Calendar folder.

    • It initially sets the method of the HttpWebRequest class to "MKCOL"
    • Then sends the request with the user credentials to the Exchange server.
    • It uses the HttpWebResponse method to receive the response.

    The HttpWebRequest and the HttpWebResponse methods are available in the System.Net namespace

  • Le Café Central de DeVa

    Installing Ubuntu 10.10 on Windows Server 2008 R2 Hyper-V


    I used the following steps to install Ubuntu (10.10) version in the my Windows Server 2008 R2 Hyper-V machine.

    1) Created a new Hyper-V machine

    2) Downloaded the latest Ubuntu ISO. You can notice few options on this page:

    (a) Download Desktop Edition – I used this.
    (b) Burn your CD or create a USB drive
    (c) You can try it before you install it

    3) Create a legacy Network driver and associate it with the above Hyper-V machine

    4) Select the Ubuntu ISO by the following option: Hyper-V –> Media –> DVD Drive –> Insert Disk

    5) Started the Ubuntu Hyper-V and mount with above ISO


    6) Select the options to Install Ubuntu and its configuration. For the disk management, you can use the entire drive or customize the drive partition as per your requirement.



    One it’s installed, it will request you to restart. During the time, make sure to remove the above mounted ISO drive.


    I would rate the installation is pretty straight, works fine with all the drivers. I haven’t faced any glitches during the above work and loads with 640 * 480 display configuration.

    Bingo. Enjoy!!

  • Le Café Central de DeVa

    KB : Application support for WEBDAV to access Exchange Server?


    Exchange Server 2003Do you know the support that is available for applications that use the Web Distributed Authoring and Versioning (WebDAV) protocol to access Microsoft Exchange 2000 Server or Microsoft Exchange Server 2003 ?


    What is supported?

    Microsoft support the use of the WebDAV protocol for the following items:

    •Non-recurring appointments
    •Contacts in Microsoft Outlook that you create or modify
    •Folders that you create in Outlook and in Exchange 2000 Server or Exchange Server 2003
    •E-mail messages that you create or modify

    You cannot use the WebDAV protocol to access the Rich Text Format (RTF) body of an e-mail message.

    All other tasks that use the WebDAV protocol to modify a Web store in Exchange 2000 Server or in Exchange Server 2003 are not supported.
    Note These limitations do not apply to Outlook Web Access URLs.

    Why it's not supported?

    Because of limitations that exist when you create items that are compatible with Outlook, we do not support complex calendaring when you use the WebDAV protocol. Complex calendaring applications include the following items:

    •Recurring appointments
    •Meeting functionality
    Note Meeting functionality includes sending, modifying, and canceling meetings.

    What are the alternatives?

    For applications that require complex calendaring functionality with Exchange 2000 Server or with Exchange Server 2003, we recommend that you use the following API's:

    •Collaboration Data Objects for Exchange 2000 Server (CDOEX)
    •Collaboration Data Objects (CDO) 1.21
    •Outlook Object Model

    These API's include additional logic that is required to make the created items work correctly with Outlook. This additional logic is not available when you use the WebDAV protocol. for more information please find the following MSDN KB.

  • 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

    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:

Page 3 of 27 (669 items) 12345»