Cover Story

Outlook 2000

Office's Killer App Just Keeps Getting Better

By Thomas Rizzo

With Outlook 97, Microsoft delivered a breakthrough product based on a unique vision to combine support for the following capabilities in a single application:

Outlook 98 and, now, Outlook 2000 build on the original Outlook product vision, particularly in the areas of Internet standards support, ease-of-use and simplicity, and support for collaborative solutions. As a result, Outlook 2000 is the premier messaging and collaboration client for Internet-based messaging systems, as well as for the fast-growing number of customers who use Microsoft Exchange Server for advanced messaging and collaboration on their corporate intranets.

Released in March of 1998, Outlook 98 included major enhancements that reduced complexity, improved performance, and provided industry-leading support of Internet standards. Outlook 98 essentially swept the competitive e-mail client reviews, winning on the strength of its e-mail, the advantages of tight integration with Calendar and Contact management, the ease of its setup, and the simultaneous power and simplicity of new features, such as Outlook Today and the Organize and in-place Find tools.

Outlook 98's strengths are enhanced in Outlook 2000 and, when combined with new features and tight integration with Microsoft Office 2000, Outlook 2000 becomes the place where users can store, access, and act on virtually all their important information and communications.

Better E-mail

E-mail is Outlook's forte. Outlook 2000 leads the industry in supporting Internet standards and providing powerful tools that let users effectively manage their e-mail.

Outlook 97 supported using Word 97 as its editor. Outlook 2000 enhances this significantly, containing support for Microsoft Office E-mail, which provides a standard e-mail toolbar that allows users to address and send any Microsoft Office 2000 document from within the application that created it. And the message can be sent as HTML, so the recipient need not have the specific Office application to read the message. Outlook 2000 supports HTML, plain text, and rich text format files in the bodies of e-mail messages. This gives users flexible control over the format in which they send messages, and makes the choice of editors independent of the choice of the e-mail body format.

Outlook 97 featured an add-on named the Rules Wizard interface, a powerful yet intuitive mechanism for creating server or client-side rules. Outlook 2000 integrates the Rules Wizard as a built-in feature, allowing users to apply rules they've created for mail already in their inboxes or other folders, as well as to support rules that print messages or pass them to custom executables. Outlook 2000 also adds support by using the Rules Wizard with IMAP4 mail servers.

Better Calendar, Contact, and Task Management

Most Outlook users also avail themselves of Outlook's Calendar, Contact, and Task management features. These users are in for a treat.

First, Calendar views have been fine tuned, with support for word-wrap, ScreenTips over text that doesn't fit within the space for the appointment, the ability to customize the background color of the calendar for easier reading, the ability to hide private appointments in printouts, and an improved Calendar Details printout style.

For users who take advantage of advanced Group Scheduling with Microsoft Exchange Server, Outlook 2000 has some powerful enhancements (see FIGURE 1). A few examples include an easier-to-use meeting planner, support for Distribution-list (aliases) expansion in the planner, improved support for updating the attendees of an existing meeting, and the ability to directly book resources, such as conference rooms (rather than sending them a piece of e-mail).

FIGURE 1: The improved Meeting Planner in Outlook 2000. You can now expand Distribution Lists and find available resources, such as conference rooms, much more easily.

Users who manage other people's calendars will breathe a sigh of relief with a list of most recently opened calendars — from which any can be opened — as well as the added support for hiding details of some appointments, even from those who have access to your calendar.

Outlook 2000 also supports basic group scheduling with users reached via the Internet, using the Internet iCalendar standard. And Outlook goes beyond simply scheduling meeting times, with support for scheduling NetMeeting and NetShow sessions. And while we're talking about groups, Outlook 2000 allows users to store personal distribution lists in the Contact folder, enabling them to be viewed alongside individual contacts.

Many users asked for the ability to organize information in Outlook according to whom it relates. These users will appreciate the new Contact Activity Tracking feature. Contact Activity Tracking allows you to associate any item, programmatically or through the user interface, with anyone in your Contact list (see FIGURE 2). Mail messages, meeting requests, tasks, or any other item sent to, or received from, the contact will automatically be associated. Outlook then allows you to view this associated data from a new tab on the Contact item (discussed in detail later in this article under "The Outlook 2000 Programming Model and Office COM Add-ins").

FIGURE 2: Linking Contacts in Outlook 2000 makes it easy to create shortcuts to other items on a single contact.

A Better Place to Live

More and more users are finding e-mail is their critical mode of communication. As e-mail replaces many phone calls, letters, and faxes, e-mail clients are becoming the central applications on users' computers. Outlook 2000's tight integration of Calendar, Contacts, and Tasks with this e-mail functionality naturally makes users more effective. However, they also want the ability to access the key remaining information they need — the Web — from within Outlook.

Outlook 2000 addresses this need by providing Web Views: the ability to host and browse frequently used Web pages in the right pane of the Outlook window. Users can drag Internet shortcuts into the Outlook Bar, and click on them to display the target page. Browsing functionality, such as Back, Forward, and Favorites, is also provided.

Outlook uses components of Microsoft Internet Explorer to deliver high-quality Web rendering that stays up-to-date with the latest technologies. Web pages can also be associated with a personal or Exchange Server public folder, providing a useful initial view on the folder and an easy way to associate Web content with the folder. The associate pages can provide useful instructions, links to key views of the folder, a custom search page, contacts, and other key information about the folder (see FIGURE 3).

FIGURE 3: An Outlook WebView in a public folder in Outlook 2000. Now you can associate any URL with an Outlook folder.

A Better Place to Collaborate

In addition to providing industry-leading support for the most popular collaboration applications today — e-mail and group scheduling — Outlook 2000 includes a wealth of new object model enhancements and features that developers can use when creating discussion, routing, and tracking applications.

Outlook 2000 further enhances the Exchange Server public folder experience beyond Outlook 97 with support for background, automatic, and filtered synchronization of Offline folders (see FIGURE 4). In addition, a new Find Public Folder feature allows users to search the entire Microsoft Exchange hierarchy for folders that meet their criteria. There is also a one-click method to send a public folder link to another user who may be interested.

FIGURE 4: Setting up offline synchronization in Outlook 2000 is a snap with this new streamlined interface.

The Outlook 2000 Programming Model and Office COM Add-ins

The success of Outlook 97 and 98 as tools for collaborative solutions has been impressive. Solution Developers have delivered outstanding examples of integrated applications using Outlook and Exchange. With Outlook 2000, the Outlook Team has expanded the scope of solutions developers can create. Responding to customer requests, the Outlook team has focused on some fundamental design goals in delivering this new version:

Provide greater developer control over Outlook

Provide more feedback on user actions to the developer

Eliminate the requirement to use Exchange Client Extensions when developing simple solutions

To this end, the Outlook 2000 Object Model adds over 10 new objects, over 25 new methods, more than 30 new events, and about 50 new properties.

Moreover, while Outlook 97 and 98 have been remarkable successes in the collaboration development arena, many developers have encountered limitations in the breadth of solutions they can create. One of the key limitations was the lack of events Outlook fired. Before Outlook 2000, events in Outlook were only fired at the item (form) level. This meant that a developer was only notified when something happened at this level, i.e. an item was opened, data in the item was changed, the item was closed, etc.

The introduction of Outlook 2000 ushers in a new era for collaborative application development by expanding the Outlook Programming Model considerably. For example, events now fire when new mail arrives in a user's Inbox, when a new item is added to a folder, and when a user changes the selected item(s) in a view. There is also now a complete object model around the Outlook Bar, so developers can programmatically create or delete new Outlook Bar groups and shortcuts.

While a massively expanded programming model is important, it's only half the story. Without a methodology for trapping more events with Outlook, all this work would be inaccessible to developers because, in Outlook 97 and 98, one could only write code as VBScript behind a form. Enter Microsoft Office COM Add-ins, or COM Add-ins for short. In brief, COM Add-ins provide the architecture for developing components that can be plugged into any Microsoft Office application.

Let's take a close look at Outlook 2000's enhancements and what they mean.

The Outlook 2000 Object Model

The foundation behind any customizable application is its object model. Since Outlook 97, developers have been able to access and manipulate Outlook from Visual Basic, VBA, or any other COM-compliant language via its object model. One of the first things savvy Outlook developers will appreciate about the new version is the addition of numerous events. Outlook 2000 includes new events on almost all existing objects, as well as adding some new special interfaces. Let's take a look at some of the benefits developers will inherit from this work.

Powerful control over user interaction. Of the enhancements to Outlook in version 2000, the ability to receive notification on user actions is probably the most notable. Outlook 2000 includes numerous events to tell the developer what's happening in Outlook — whether initiated by the application or by the user. The table shown in FIGURE 5 is just a small sample of some of the more compelling new events in Outlook 2000.

Event Object Description
NewMail Application Event that fires when new mail arrives in the Inbox.
NewExplorer, NewInspector Application Notification when a new Explorer object or Inspector object is created — either via the UI or programmatically.
ItemSend Application Notification when an item is sent. This event is cancelable so developers can stop the item from being sent.
ItemAdd, ItemChange, ItemRemove Items Collection Within any folder, you can receive notification when an item is added, changed, or removed.
BeforeFolderSwitch, BeforeViewSwitch Explorer For any given Explorer, an event is fired each time the user attempts to change to a different folder or change the current view of the active folder. These events are cancelable so developers can prevent the action.
FolderAdd, FolderChange, FolderRemove Folders Collection Developers asked us for a way to know when a user creates a new folder, changes an existing folder, or deletes a folder. These events enable that notification.

FIGURE 5: Some of Outlook 2000's new events.

Greater ability to manipulate Outlook objects. Outlook 97 and 98 gave developers the ability to create custom solutions primarily by creating customized forms based on one of the standard Outlook item types (Mail, Appointment, Contact, etc.). This model is effective for a specific class of applications, but developers asked for more control over Outlook. Outlook 2000 adds a new level of control by exposing a number of new objects and providing additional methods to existing ones. For example, Outlook 2000 adds a set of objects to manipulate the Outlook Bar. These objects (OutlookBarGroup, OutlookBarShortcut, and OutlookBarStorage) give the developer the ability to programmatically create new Outlook Bar groups and shortcuts — or manipulate existing ones. In addition, new methods have been added to the Folders Collection Object to permit developers to easily create, change, or delete folders through Automation.

Outlook 2000 also boasts some new end-user features that are also incorporated into the object model. For example, Distribution Lists are a new item in Outlook 2000 that provide users with the ability to create lists of contacts typically used as a shortcut when addressing e-mail or scheduling a meeting with a group of users. Distribution Lists can contain members from the user's Contacts folder, the Microsoft Exchange Server Global Address List, and Contacts folders shared on Exchange Server. Distribution List items co-exist with Contact items in a Contacts folder. Outlook 2000 exposes the Distribution List item in the Object Model as the DistListItem. Like any other standard item, it's customizable and can have script behind it. It also inherits all the standard Outlook item methods and events such as Open, Close, and PropertyChange. In addition to the standard item methods, there are also new methods specifically for Distribution List manipulation.

Contact Activity Tracking is a new feature in Outlook 2000 that allows users to quickly find all e-mail, appointments, tasks, and other contacts related to activities with a particular contact. This is implemented by searching a user-configurable set of folders to find the related items, and by also supporting the inclusion of a link in any item to associate it with a specified list of contacts. For example, a user may have e-mail from a colleague regarding a specific customer. While the customer isn't a recipient or sender of the message, the user may still want to be able to track the item by the contact. Thus, the user links the item to the contact item for the customer being discussed. In addition, Contact folders and folders containing e-mail, appointments, tasks, and documents can be shared on Microsoft Exchange Server to create shared Contact Activity Tracking applications. Outlook 2000 includes programmatic interfaces so developers can create, read, or delete the links that relate to the items.

Eliminating the requirement to create Exchange Client Extensions for simple solutions. While certainly a sound customization environment, the Outlook 97 and 98 programming model often forced developers to rely on Exchange Client Extensions for some relatively simple solutions. Outlook 2000 makes creating simple solutions — well — simple. Indeed, it's expected that for over 90 percent of the cases Microsoft discussed with developers, the new Outlook Object Model will be sufficient. Toward this end, Microsoft added objects such as PropertyPage(s) and PropertyPageSite, which allow developers to create custom Property pages for the Options and Folder Properties dialog boxes.

This makes it easy for a developer to provide a user interface for capturing data, specific to their solution, that needs to be persisted from session to session. Outlook 2000 also includes greater control over Attachments so that events are fired when a user attempts to create, or open, an Attachment. New object interfaces are included to control synchronization between the local Outlook mail storage and the Exchange Server. Also, in direct response to customer feedback, Outlook 2000 includes greatly enhanced support over the Command Bar and Tool Bar in both the Outlook Explorer (views) as well the Inspector (form) level.

Microsoft added so much to the Outlook Object Model in 2000 that the number of elements has almost doubled. Space limitations have allowed me to only scrape the surface of the new and enhanced developer features in Outlook 2000.

The low-down on Office 2000's COM Add-ins. COM Add-ins are an offspring of Visual Basic 5.0's extensibility mechanism and apply specifically to Office 2000 applications, i.e. Word, Excel, PowerPoint, Outlook, and FrontPage.

A single interface (IDTExtensibility2) provides five methods with which developers can write code. Each Office application is then responsible for notifying the loaded Add-ins when specific events occur for which it has registered.

To illustrate, let's use the example of a COM Add-in that displays a dialog box telling the user how many pieces of mail are in the Inbox each time a new piece of mail arrives. The Outlook event that is of interest to the COM Add-in is the NewMail event that is fired by Outlook's Application object. The Outlook developer must declare this object variable WithEvents so the host will properly notify it when the event occurs. When Outlook boots, the COM Add-in must notify Outlook that it is "interested in" the NewMail event referred to as synching the event. You do this in the OnStartupComplete method code block. Then, each time Outlook receives a new piece of mail in a user's Inbox, it will notify the COM Add-in. It's the code in the COM Add-in that then displays the message box indicating how many items are in the Inbox.

To make this work, however, the developer is required to implement the IDTExtensibility2 interface shown in FIGURE 6. Moreover, COM Add-ins can be written in virtually any programming language — the only requirement being that it supports COM. It's extremely easy to create COM Add-ins using Microsoft Visual Basic.

Interface Method Host application fires this event when ...
OnConnection ... the Add-in is connected to it.
OnStartupComplete ... it's finished initializing.
OnAddInsUpdate ... something changes in the collection of connected add-ins.
OnDisconnection ... the Add-in is disconnected from it.
OnBeginShutdown ... it starts to shut down (close).

FIGURE 6: The IDTExtensibility2 interface.

The flexibility of Outlook 2000's improved object model, combined with the power of Microsoft Office COM Add-ins, provides developers a much more efficient and pleasurable experience while expanding the breadth of solutions that can be developed.

Conclusion

With Outlook 2000, Microsoft Office 2000 advances the vision of a central workspace for all of a user's information and communication needs. More information can be found at http://www.microsoft.com/office/ and http://www.microsoft.com/outlook.

Thomas Rizzo works as a Product Manager in the Microsoft Exchange Server Product Unit in Redmond, WA. He specializes in evangelizing development features in both Exchange and Outlook. You can reach Tom at thomriz@microsoft.com.