Le Café Central de DeVa
let.us.develop.share.messaging.more... DeVa blogs!!
I changed the way of blogging. Re-designed the site & started using the latest Windows Live Writer 2011!! Additionally added Microsoft Translator gadget available @ top of page, so that you can change the page in your preferred language!!
Hi, I am Deva working with Microsoft Dev. Messaging & Collaboration team.
This blog will assist developers who design/develop custom applications using Microsoft Messaging libraries. I will try to touch base other developer related info too.
Let us talk.develop.messaging.share.more.
You can get the MAPI reference for Outlook 2010 using MSDN: http://msdn.microsoft.com/en-us/library/cc765775(office.14).aspx
MAPI for Outlook 2010 provides a set of interfaces, functions, and other data types to facilitate the development of Outlook 2010 messaging applications. Applications and transports use MAPI to manipulate e-mail data, to create e-mail messages and the folders to store them in, and to support notifications of changes to existing MAPI-related data.
Something related, that if you’re interested and want to try to use…
Happy programming!!
Have you tried copying all Outlook Calendar items from one folder to another? What is the result that you got?
In Microsoft Office Outlook 2007, Outlook 2003, Outlook 2002, and Outlook 2000, you cannot copy all the items in a Calendar folder when you right-click the folder, you click Copy Calendar, and then you paste in another top-level folder. Instead, this method creates a new subfolder under the destination folder.
To copy all of the items from a Calendar folder to another folder, you must select each item and then copy and paste it to the target folder.
Please refer the KB, so that you can get some alternate ways to do this.
With continuation of my previous article, it just points out to find how we can get by using UI(User Interface like snap-in, MMC Console, ESM..etc)’s.
This time, let me try something different with Exchange Server 2007 (i tried with Exchange Server 2007 SP1 RUx) with its powershell/cmdlet. In order to get the version number, i tried like this to obtain the attributes of the server,
> Get-ExchangeServer | Select ExchangeVersion, AdminDisplayVersion
This provides the ExchangeVersion and AdminDisplayVersion respectively. Hope this helps.
Determine version number of Exchange: To determine the version number, the build number, and the service pack level of a Microsoft Exchange Server computer, check the following properties of the server.
If you have Exchange Server 4.0, Exchange Server 5.0, or Exchange Server 5.5 then you can, follow these steps:
Build numbers and version numbers of the Exchange Server: Each version of Microsoft Exchange Server has a different build number. The following table lists the build numbers and general release dates for each version.
Version
Build number
Release date
Microsoft Exchange Server 4.0
4.0.837
April 1996
Microsoft Exchange Server 4.0 (a)
4.0.993
August 1996
Microsoft Exchange Server 4.0 SP1
4.0.838
May 1996
Microsoft Exchange Server 4.0 SP2
Microsoft Exchange Server 4.0 SP3
4.0.994
November 1996
Microsoft Exchange Server 4.0 SP4
4.0.995
April 1997
Microsoft Exchange Server 4.0 SP5
4.0.996
May 1998
Microsoft Exchange Server 5.0
5.0.1457
March 1997
Microsoft Exchange Server 5.0 SP1
5.0.1458
June 1997
Microsoft Exchange Server 5.0 SP2
5.0.1460
February 1998
Microsoft Exchange Server 5.5
5.5.1960
November 1997
Microsoft Exchange Server 5.5 SP1
5.5.2232
July 1998
Microsoft Exchange Server 5.5 SP2
5.5.2448
December 1998
Microsoft Exchange Server 5.5 SP3
5.5.2650
September 1999
Microsoft Exchange Server 5.5 SP4
5.5.2653
November 2000
Microsoft Exchange 2000 Server
6.0.4417
October 2000
Microsoft Exchange 2000 Server (a)
January 2001
Microsoft Exchange 2000 Server SP1
6.0.4712
July 2001
Microsoft Exchange 2000 Server SP2
6.0.5762
December 2001
Microsoft Exchange 2000 Server SP3
6.0.6249
August 2002
Microsoft Exchange 2000 Server post-SP3
6.0.6487
September 2003
6.0.6556
April 2004
6.0.6603
August 2004
6.0.6620.5
March 2008
6.0.6620.7
August 2008
Microsoft Exchange Server 2003
6.5.6944
October 2003
Microsoft Exchange Server 2003 SP1
6.5.7226
May 2004
Microsoft Exchange Server 2003 SP2
6.5.7638
October 2005
Microsoft Exchange Server 2003 post-SP2
6.5.7653.33
6.5.7654.4
Microsoft Exchange Server 2007
8.0.685.24 or 8.0.685.25
December 2006
Microsoft Exchange Server 2007 SP1
8.1.0240.006
November 2007
Some time earlier, Windows 7 Has Been Released to Manufacturing. You can get a detailed information that’s available in the Official Windows Blog by Brandon-LeBlanc.
Also i found the Microsoft Press pass release info…
More information about today’s news is available via the following links:
•Windows Team Blog
•Windows Server Blog
•Partner Web sites, http://readyset7.com and http://talkingaboutwindows.com/Default.aspx
•Windows 7 and Windows Server 2008 R2 for businesses
Hope this helps!!
With continuation of my previous–related blog post, I got this task to find out the way how to identify the existing categories and updating/adding new categories in Outlook 2007 using Outlook Object Model programmatically.
I tried the following to find whether the category exists or not:
Public Function CategoryExists(categoryName As String) As Boolean
Dim category As Outlook.category
Set category = Application.Session.categories(categoryName)
If Not (category Is Nothing) Then
CategoryExists = True
Else
CategoryExists = False
End If
End Function
Then, implement your programming logic, whatever you want to try (update/adding new categories) using OOM. I tried something like this for the category “Cat1” – enclosed the code snippet for your view (code snippet just shows how you can try, not exact implementation):
Private Sub AddACategory()
Dim categories As Outlook.categories
Set categories = Application.Session.categories
If Not CategoryExists("Cat1") Then
Dim categorynew As Outlook.category
Set categorynew = categories.Add("Cat1", Outlook.OlCategoryColor.olCategoryColorPurple,
_Outlook.OlCategoryShortcutKey.olCategoryShortcutKeyCtrlF11)
categories.Remove ("Cat1")
Dim gotcategory As Outlook.category
Set gotcategorynew = categories.Add("Cat1", Outlook.OlCategoryColor.olCategoryColorDarkGreen, _Outlook.OlCategoryShortcutKey.olCategoryShortcutKeyCtrlF11)
End Sub
While working with one of my customer we noticed that the yearly recurring appointment doesn’t show in Outlook Web Access or Exchange Web Services(EWS) application.
Customer created a monthly or yearly recurring appointment. He set the request to occur on the second, third, or fourth weekday of a month. But, whenever we use Outlook Web Access (OWA) client or customer’s Exchange Web Service (EWS) application to view this request, the request is set to occur on the first weekday of the month; but strangely, the Outlook 2007 client displays the appointment correctly. When we do the troubleshooting, this happens for Exchange Server 2007 SP1 Roll up 4.
We recommended customer to install the latest service pack (during the time it was Update Rollup 7), which resolved the issue.
using System;
using System.Net;
using System.IO;
using System.Text;
using System.Xml;
namespace SampleCode
{
class GetFolders
static void Main(string[] args)
// Variables.
System.Net.HttpWebRequest Request;
System.Net.WebResponse Response;
System.Net.CredentialCache MyCredentialCache;
string strRootURI = "http://server/exchange/username/Inbox/"; // Provide the valid URI
string strUserName = "UserName";
string strPassword = "Password";
string strDomain = "Domain";
string strQuery ="";
byte[] bytes = null;
System.IO.Stream RequestStream = null;
System.IO.Stream ResponseStream = null;
System.Xml.XmlTextReader XmlReader = null;
try
// Build the SQL query.
strQuery = "<?xml version=\"1.0\"?><D:searchrequest xmlns:D = \"DAV:\" >";
strQuery += "<D:sql>SELECT \"DAV:href\" FROM scope('hierarchical traversal of \"";
strQuery += strRootURI + "\"')</D:sql></D:searchrequest>";
// Create a new CredentialCache object and fill it with the network credentials required to access the server.
MyCredentialCache = new System.Net.CredentialCache();
MyCredentialCache.Add( new System.Uri(strRootURI),
"NTLM",
new System.Net.NetworkCredential(strUserName, strPassword, strDomain)
);
// Create the HttpWebRequest object.
Request = (System.Net.HttpWebRequest)HttpWebRequest.Create(strRootURI);
// Add the network credentials to the request.
Request.Credentials = MyCredentialCache;
// Specify the method.
Request.Method = "SEARCH";
// Encode the body using UTF-8.
bytes = Encoding.UTF8.GetBytes((string)strQuery);
// Set the content header length. This must be
// done before writing data to the request stream.
Request.ContentLength = bytes.Length;
// Get a reference to the request stream.
RequestStream = Request.GetRequestStream();
// Write the SQL query to the request stream.
RequestStream.Write(bytes, 0, bytes.Length);
// Close the Stream object to release the connection
// for further use.
RequestStream.Close();
// Set the content type header.
Request.ContentType = "text/xml";
// Send the SEARCH method request and get the
// response from the server.
Response = (HttpWebResponse)Request.GetResponse();
// Get the XML response stream.
ResponseStream = Response.GetResponseStream();
// Create the XmlTextReader object from the XML
// response stream.
XmlReader = new XmlTextReader(ResponseStream);
// Read through the XML response, node by node.
while(XmlReader.Read())
// Look for the opening DAV:href node. The DAV: namespace is
//typically assigned the a: prefix in the XML response body.
if(XmlReader.Name == "a:href")
// Advance the reader to the text node.
XmlReader.Read();
// Display the value of the DAV:href text node.
Console.WriteLine("Value: " + XmlReader.Value);
Console.WriteLine("");
//Advance the reader to the closing DAV:href node.
}
// Clean up.
XmlReader.Close();
ResponseStream.Close();
Response.Close();
catch(Exception ex)
// Catch any exceptions. Any error codes from the SEARCH method request
Console.WriteLine(ex.Message);
Hope this helps.
The Microsoft Exchange Server 2010 Protocol technical documentation set provides detailed technical specifications for Microsoft protocols and extensions to industry-standards or other published protocols that are implemented and used in Microsoft Exchange Server 2010.
This allows the user to interoperate or communicate natively with Microsoft Office client and other server products. The documentation is designed to describe each protocol in detail as it is used by the Microsoft Exchange Server. Each protocol specification documents the technical requirements, limitations, dependencies, and Microsoft-specific protocol behavior. The documentation set includes a set of companion overview and reference documents that supplement the technical specifications with conceptual background, overviews of inter-protocol relationships and interactions, and technical reference information.
You can download it from: Microsoft Download Center
On 7/17/2009, Microsoft released Update Rollup 9 for Exchange Server 2007 Service Pack 1. This update Rollup 9 for Exchange Server 2007 Service Pack 1 (SP1) resolves issues that were found in Exchange Server 2007 SP1 since the software was released. This update rollup is highly recommended for all Exchange Server 2007 SP1 customers.
This update rollup does not apply to Exchange Server 2007 Release To Manufacturing (RTM). For a list of update rollups applicable to Exchange Server 2007 RTM, refer to the section Update rollups for Exchange Server 2007 RTM in the Knowledge Base article KB937052. This is a cumulative update rollup and replaces the following:
The following file is available for download from the Microsoft Download Center: Download the Exchange2007-KB970162-EN package now.
For a list of changes that are included in this update rollup, refer KB970162.