Patent Publication Number: US-2004054736-A1

Title: Object architecture for integration of email and instant messaging (IM)

Description:
CROSS REFERENCE TO RELATED APPLICATIONS  
     [0001] This application claims the benefit of U.S. provisional patent application serial Nos. 60/411,336, filed Sep. 17, 2002; 60/416,916, filed Oct. 8, 2002; 60/419,613, filed Oct. 17, 2002; 60/426,145, filed Nov. 14, 2002; 60/426,146, filed Nov. 14, 2002; 60/426,422, filed Nov. 14, 2002; 60/426,432, filed Nov. 14, 2002; and 60/426,440, filed Nov. 14, 2002.  
     [0002] These provisional patent applications are incorporated herein by reference as if set forth in their entireties.  
     [0003] Additionally, U.S. patent application Ser. Nos. 10/274,405, filed Oct. 18, 2002; 10/274,408, filed Oct. 18, 2002; and 10/274,478, filed Oct. 18, 2002 are also incorporated herein by reference as if set forth in their entireties. 
    
    
     
       FIELD OF INVENTION  
       [0004] The present invention relates generally to the Internet and, more particularly, to systems and methods for integrating instant messaging (IM) services and email services.  
       BACKGROUND  
       [0005] Instant messaging (IM) is a real-time based communications system while email is more of a correspondence form of messaging. Upon receiving an email message, rather than replying to the listed recipients via email, a user may wish to expedite communications by chatting via IM with the sender of the email or with other people (e.g., other contacts) addressed in the email message.  
       [0006] In the past, vendors have offered an IM roster as a single pane in the main email window, thereby permitting a user to launch a separate IM client to chat with a contact that is listed on the IM roster. However, this type of environment provided nothing more than a single view of two separate clients (e.g., an email client and an IM client).  
       [0007] In view of this deficiency, a heretofore-unaddressed need exists in the industry for greater integration between email and IM.  
       SUMMARY  
       [0008] The present disclosure provides systems and methods for integrating instant messaging (IM) services and email services.  
       [0009] Briefly described, in architecture, one embodiment of the system comprises an address book database having contact information of a contact, and an address book object configured to store contact information to the address book database. In one embodiment, the contact information comprises a reference identifier (ID) uniquely associated with the contact. Additionally, in one embodiment, the contact information further comprises an email address and an IM address of the contact, which are both correlated to the reference ID. In one embodiment, the address book object is configured to retrieve contact information from the address book database or to modify contact information in the address book database.  
       [0010] The present disclosure also provides methods for integrating instant messaging (IM) services and email services.  
       [0011] In this regard, one embodiment of the method comprises the steps of launching a tray manager, instantiating an email user agent from the tray manager, instantiating an instant messaging (IM) user agent from the tray manager, and instantiating an address book object from the tray manager. In one embodiment, the address book object is configured to communicate with both the email user agent and the IM user agent.  
       [0012] Other systems, methods, features, and advantages will be or become apparent to one with skill in the art upon examination of the following drawings and detailed description. It is intended that all such additional systems, methods, features, and advantages be included within this description. 
     
    
    
     BRIEF DESCRIPTION OF THE DRAWINGS  
     [0013] Many aspects of the disclosure can be better understood with reference to the following drawings. The components in the drawings are not necessarily to scale, emphasis instead being placed upon clearly illustrating the principles of the present invention. Moreover, in the drawings, like reference numerals designate corresponding parts throughout the several views.  
     [0014]FIG. 1 is a block diagram showing one embodiment of component architecture for integrating instant messaging (IM) and email.  
     [0015]FIGS. 2A through 2C are block diagrams showing one embodiment of component architecture related to email services.  
     [0016]FIGS. 3A through 3C are block diagrams showing one embodiment of component architecture related to IM services.  
     [0017]FIGS. 4A through 4C are block diagrams showing instantiation of various email components in one embodiment of the system.  
     [0018]FIG. 5 is a block diagram showing functionality of the read window of FIG. 4C.  
     [0019]FIGS. 6A through 6C are block diagrams showing instantiation of various IM components in one embodiment of the system.  
     [0020]FIG. 7 is a block diagram showing an overview of component architecture related to both IM and email services.  
     [0021]FIG. 8 is a diagram showing one embodiment of the mail store of FIG. 7 in greater detail.  
     [0022]FIG. 9 is a diagram showing one embodiment of a user interface for the message center of FIG. 7 in greater detail.  
     [0023]FIG. 10 is a diagram showing one embodiment of a user interface for the read window of FIG. 7 in greater detail.  
     [0024]FIG. 11 is a diagram showing one embodiment of the address book user interface of FIG. 7 in greater detail.  
     [0025]FIG. 12 is a diagram showing one embodiment of a user interface for adding new contact information.  
     [0026]FIGS. 13A and 13B are diagrams showing one embodiment of the address book database of FIG. 7 in greater detail.  
     [0027]FIG. 14 is a diagram showing one embodiment of the roster window of FIG. 7 in greater detail.  
     [0028]FIG. 15 is a diagram showing one embodiment of the chat window of FIG. 7 in greater detail.  
     [0029]FIG. 16 is a diagram showing a thread history database in accordance with one embodiment of the invention.  
     [0030]FIG. 17 is a flowchart showing one embodiment of a method for integrating email and IM services in which IM Internet presence information is displayed on an email read window.  
     [0031]FIG. 18 is a flowchart showing another embodiment of a method for integrating email and IM services in which an IM session may be initiated from an email read window.  
     [0032]FIGS. 19 and 20 are flowcharts showing another embodiment of a method for integrating email and IM services in which IM sessions with multiple contacts is established at a single IM window.  
     [0033]FIG. 21 is a flowchart showing another embodiment of a method for integrating email and IM services in which IM messages from two disparate IM services is bridged by the user&#39;s IM service.  
     [0034]FIG. 22 is a flowchart showing, in greater detail, the reformatting of the IM message shown in FIG. 21.  
     [0035]FIG. 23 is a flowchart showing, in greater detail, the removing of the user IM address from the IM message as shown in FIG. 22.  
     [0036]FIG. 24 is a flowchart showing one embodiment of a method for integrating email and IM services in which contact information is correlated to a contact identifier associated with a particular contact.  
     [0037]FIG. 25 is a flowchart showing one embodiment of a method for integrating email and IM services in which an email thread history is stored in a single thread history database.  
     [0038]FIG. 26 is a flowchart showing one embodiment of a method for integrating email and IM services in which an email thread history is stored in a single thread history database.  
     [0039]FIG. 27 is a flowchart showing one embodiment of a method for integrating email and IM services in which an IM thread history is stored in a single thread history database.  
     [0040]FIGS. 28A through 28C are data flow diagrams corresponding to FIGS. 2A through 2C.  
     [0041]FIGS. 29A through 29D are data flow diagrams corresponding to FIGS. 3A through 3C.  
     [0042]FIG. 30 is a block diagram showing one embodiment of an email user agent instantiating a plurality of post office protocol version  3  (POP 3 ) transport protocol objects (TPOs).  
     [0043]FIG. 31 is a block diagram showing one embodiment of an email user agent communicating with a plurality of email servers through the plurality of POP 3  TPOs. 
    
    
     DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS  
     [0044] Reference is now made in detail to the description of the embodiments as illustrated in the drawings. While several embodiments are described in connection with these drawings, there is no intent to limit the invention to the embodiment or embodiments disclosed herein. On the contrary, the intent is to cover all alternatives, modifications, and equivalents. Additionally, while the following description and accompanying drawings specifically describe integration of instant messaging (IM) and email, it will be clear to one of ordinary skill in the art that the systems and methods presented herein may be extended to integrating other messaging protocols such as voice-over Internet protocol (VoIP), video conferencing, etc.  
     [0045]FIG. 1 is a block diagram showing one embodiment of component architecture for integrating instant messaging (IM) and email. As shown in FIG. 1, one embodiment of a system for integrating IM and email comprises a tray manager  102 , an IM user agent  104 , an email user agent  106 , an address book object  108 , and an address book database  110 . In an example embodiment, the various components  102 ,  104 ,  106 ,  108 ,  110  may be seen as software modules, which are launched by a user on a personal computer (not shown) or other programmable device (not shown). In another embodiment, the various components  102 ,  104 ,  106 ,  108 ,  110  may be seen as software objects in a distributed network (not shown), which are instantiated and destroyed by appropriate software commands. Since instantiation and destruction of objects in distributed networks is well known, further discussion of object instantiation and destruction is omitted.  
     [0046] In one embodiment, the various components  102 ,  104 ,  106 ,  108 ,  110  of FIG. 1 are software modules on a user&#39;s personal computer (not shown). In this regard, the software modules are installed on a user&#39;s personal computer and, thereafter, are launched by the user. During installation of the software modules, the user is queried for the user&#39;s login names and passwords for all of the user&#39;s email accounts and all of the user&#39;s IM accounts. The login names and passwords for the user&#39;s email and IM accounts are stored in a login database (not shown) for subsequent use by the software modules.  
     [0047] Upon installation of the software modules onto the personal computer (not shown), a user launches the tray manager  102 . The tray manager  102  generates commands to launch the IM user agent  104 , the address book object  108 , the email user agent  106 , and the address book database  110  as background processes. In response to the generated commands, the various components  104 ,  106 ,  108 ,  110  are launched as background processes. The address book object  108  is coupled to the address book database  110  so that information may be stored to the address book database  110  by the address book object  108  or retrieved from the address book database  110  by the address book object  108 . Information stored in the address book database  110  may include, for example, names and email addresses of the user&#39;s email contacts, names and IM addresses of the user&#39;s IM contacts, phone numbers for the various email and IM contacts, mailing addresses for the various email and IM contacts, business addresses for the various email and IM contacts, etc. Examples of the address book database  110  are shown in greater detail with reference to FIGS. 13A and 13B.  
     [0048] The IM user agent  104  and the email user agent  106  are configured to communicate with the address book object  108 . In this regard, the address book object  108  functions as an interface between the IM user agent  104  and the email user agent  106 . In a broader sense, the address book object  108  interfaces the entire IM system (not shown in FIG. 1) to the entire email system (not shown in FIG. 1), thereby providing integration between the email system and the IM system.  
     [0049] The tray manager  102  is configured to track communications between with the IM user agent  104 , the address book object  108 , and the email user agent  106 . In this regard, the tray manager  102  receives commands from the IM user agent  104 , the address book object  108 , and the email user agent  106 . Similarly, the tray manager  102  generates commands and directs the generated (or received) commands to the IM user agent  104 , the address book object  108 , and the email user agent  106 . Thus, in a general sense, the tray manager  102  receives information (e.g., commands, requests, data, etc.) and directs the received information to the appropriate software module. The interplay between the various components  102 ,  104 ,  106 ,  108 ,  110  is described below in greater detail. However, it is worthwhile to note that the various launched components  102 ,  104 ,  106 ,  108 ,  110  provide a mechanism by which integration between the IM system and the email system is achieved.  
     [0050] In another embodiment, the various components  102 ,  104 ,  106 ,  108 ,  110  of FIG. 1 are objects in a distributed network (not shown). In this regard, subsequent to installation of the software modules, when a user launches the tray manager  102 , the tray manager  102  instantiates the IM user agent  104 , the address book object  108 , the email user agent  106 , and the address book database  110  and runs these objects on the client system (not shown) as background processes. The address book object  108  is coupled to the address book database  110  so that information may be stored to the address book database  110  by the address book object  108  or retrieved from the address book database  110  by the address book object  108 . The IM user agent  104  and the email user agent  106  communicate with the address book object  108 , thereby using the address book object  108  as an interface between the IM user agent  104  and the email user agent  106 . As described above, the various instantiated components  104 ,  106 ,  108 ,  110  provide a mechanism by which integration between the IM system and the email system is achieved.  
     [0051] In one embodiment, the address book database  110  may be located at a client machine (not shown) with a duplicate copy (not shown) stored at a server (not shown). In that embodiment, the copy of the address book database at the server may be updated by the address book database  110  at the client machine when a user logs into the server. Similarly, the copy of the address book database at the server may be updated by the address book database  110  at the client machine when the user logs out of the server. In this regard, a user may edit contents of the address book database  110  while the user is “off line,” and the updated contents may be uploaded to the copy of the address book database at the server when the user logs into the server.  
     [0052] Regardless of whether the various components  104 ,  106 ,  108 ,  110  are launched as software modules or instantiated as distributed objects, once the various components  104 ,  106 ,  108 ,  110  are running as background processes, the tray manager  102  launches a user interface (not shown), which requests the user to select either an IM interface (not shown in FIG. 1) or an email interface (not shown in FIG. 1). FIGS. 2A through 2C are block diagrams showing component architecture associated with the user selecting the email interface (not shown in FIG. 1), while FIGS. 3A through 3C are block diagrams showing component architecture associated with the user selecting the IM interface (not shown in FIG. 1).  
     [0053]FIGS. 2A through 2C are block diagrams showing one embodiment of component architecture related to email services when the user selects the email user interface  210 . As described above, the tray manager  102  queries the user for the selection of the IM or email interface. If the user selects the email interface, then the tray manager  102  receives the selection of the email user interface  210  and retrieves the login names and passwords, which were previously stored during installation of the software modules, from the login database. The email login names and passwords are conveyed to the email user agent  106 , which receives the login names and passwords.  
     [0054] Upon receiving the login names and passwords of all of the user&#39;s email accounts, the email user agent  106  logs into each of the user&#39;s email accounts at the various email servers  204  using the respective login names and passwords. Upon logging into each of the user&#39;s email accounts, the email user agent  106  retrieves all of the email messages stored on the email accounts and stores them at a local mail store  206 . In an example embodiment, the user&#39;s email accounts are simple mail transfer protocol (SMTP) email accounts. Additionally, the user&#39;s email account may be post office protocol version  3  (POP 3 ) compatible.  
     [0055] Since the logging into email accounts, retrieving email messages, and storing email messages at local mail stores is discussed in greater detail with reference to FIGS. 30 and 31, further discussion of the logging into email accounts, retrieving email messages, and storing email messages is omitted here. However, it is worthwhile to note that the email user agent  106  and address book object  108  of FIG. 2A permit the automatic retrieval of multiple email messages from multiple email accounts, and the storage of the retrieved email messages according to their respective originating email accounts.  
     [0056] Upon retrieving multiple email messages from multiple email accounts and storing them at the mail store  206 , the email user agent  106  generates a command to the tray manager  102  to launch or instantiate an email user interface  210  to display the retrieved email messages to the user. This is shown in greater detail in FIG. 2B. As shown in FIG. 2B, upon receiving the command to launch or instantiate the email user interface  210 , the tray manager  102  instantiates the email user interface  210 , which, in turn, instantiates a message center  212  for displaying the retrieved email messages. The email user agent  106  retrieves the stored email messages from the mail store  206  and conveys the email messages to the tray manager  102 . The tray manager  102  further conveys the email messages to the email user interface  210 , which displays the email messages at the message center  212 . Thus, at this point, all of the email messages from all of the user&#39;s email accounts are available to the user at the message center  212 . In another embodiment, the message center  212  may be instantiated with a pointer to the mail store  206 , thereby permitting direct retrieval of the email messages from the mail store  206  by the message center  212 .  
     [0057] In addition to logging into the various email accounts, the tray manager  102  initiates a login to each of the user&#39;s IM accounts. This is shown in FIG. 2C. As described above with reference to FIG. 1, the tray manager  102  retrieves the login names and passwords. The tray manager  102  conveys the IM login names and passwords to the IM user agent  104 .  
     [0058] Upon receiving the login names and passwords of all of the user&#39;s IM accounts, the IM user agent  104  logs into each of the user&#39;s IM accounts through an IM abstraction server  304  using the respective login names and passwords. The logging into various IM accounts through the IM abstraction server  304  is described in detail in U.S. provisional patent application serial Nos. 60/411,336 and 60/419,613, and U.S. patent application Ser. Nos. 10/274,408, 10/274,478, and 10/274,405, which are incorporated herein by reference as if set forth in their entireties. Also, a similar login process is shown with reference to FIGS. 30 and 31 for email accounts. Thus, further discussion of logging into various IM accounts through the IM abstraction server  304  is omitted here.  
     [0059] Upon logging into the various IM accounts, the IM user agent  104  obtains Internet presence information for all of the user&#39;s IM contacts as described in U.S. provisional patent application serial Nos. 60/411,336 and 60/419,613, and U.S. patent application Ser. Nos. 10/274,408, 10/274,478, and 10/274,405.  
     [0060] As seen from the component architecture of FIG. 1 and FIGS. 2A through 2C, the launching of the tray manager  102  results in retrieval of all of the user&#39;s email messages and all of the contacts&#39; IM Internet presence information.  
     [0061]FIGS. 3A through 3C are block diagrams showing one embodiment of component architecture related to IM services when the user selects the IM interface  308 . As described above, the tray manager  102  queries the user for a selection of the IM or email interface. If the user selects the IM interface, then the tray manager  102  instantiates the IM user interface  308 , which queries the user for the user&#39;s IM login name and password. Thus, unlike the email login process, which automatically retrieves login names and passwords without further input from the user, the IM login process requires, in this embodiment, the input of a user login name and password.  
     [0062] As shown in FIG. 3A, the IM user agent  104  receives the login name and password and looks up the login database (not shown) to determine whether or not the login name and password are valid (i.e., whether or not the login name and password are located in the login database). If the login name and password are valid, then the IM user agent  104  retrieves login names and passwords for all of the user&#39;s IM accounts.  
     [0063] Upon retrieving the login names and passwords of all of the user&#39;s IM accounts from the login database, the IM user agent  104  logs into each of the user&#39;s IM accounts through an IM abstraction server  304  using the respective login names and passwords for each of the user&#39;s IM accounts. The logging into various IM accounts through the IM abstraction server  304  is described in detail in U.S. provisional patent application serial Nos. 60/411,336 and 60/419,613, and U.S. patent application Ser. Nos. 10/274,408, 10/274,478, and 10/274,405, which are incorporated herein by reference as if set forth in their entireties. Also, similar processes related to email are described with reference to FIGS. 30 and 31. Thus, further discussion of logging into various IM accounts through the IM abstraction server  304  is omitted here.  
     [0064] Upon logging into the various IM accounts, the IM user agent  104  obtains Internet presence information for all of the user&#39;s IM contacts as described in U.S. provisional patent application serial Nos. 60/411,336 and 60/419,613, and U.S. patent application Ser. Nos. 10/274,408, 10/274,478, and 10/274,405.  
     [0065] Upon logging into the user&#39;s various IM accounts and retrieving the Internet presence information of the user&#39;s contacts, the IM user agent  104  generates a command to the tray manager  102  to display the retrieved IM information. This is shown in greater detail in FIG. 3B. As shown in FIG. 3B, upon receiving the command to display the retrieved IM information, the tray manager  102  requests the IM user interface  308  to instantiate a roster window  310  for displaying the user&#39;s contacts and the contacts&#39; respective IM Internet presence information. The IM user agent  104  conveys the IM information having the contacts&#39; names and the contacts&#39; IM Internet presence information to the tray manager  102 . The tray manager  102  further conveys the IM information to the IM user interface  104 , which displays the IM contact names and their respective IM Internet presence information to the user at the roster window  310 . Thus, at this point, all of the contacts and their respective IM Internet presence information is available to the user at the roster window  310 .  
     [0066] In addition to logging into the various IM accounts, the tray manager  102  initiates a login to each of the user&#39;s email accounts. As shown in FIG. 3C, the tray manager  102  receives the login name and password from the IM user agent  104  and conveys the login name and password to the email user agent  106 . The email user agent  106  receives the login name and password and looks up the login database (not shown) to determine whether or not the login name and password are valid (i.e., whether or not the login name and password are located in the login database). If the login name and password are valid, then the email user agent  106  retrieves login names and passwords for all of the user&#39;s email accounts.  
     [0067] Upon retrieving the login names and passwords of all of the user&#39;s email accounts from the address book database  110 , the address book object  108  conveys the login names and passwords to the email user agent  106 . The email user agent  106  logs into each of the user&#39;s email accounts at the various email servers  204  using the respective login names and passwords. Upon logging into each of the user&#39;s email accounts, the email user agent  106  retrieves all of the email messages stored on the email accounts and stores them at a local mail store  206 . In an example embodiment, the user&#39;s email accounts are simple mail transfer protocol (SMTP) email accounts. Additionally, the user&#39;s email accounts may also be POP 3  compatible.  
     [0068] Since the logging into email accounts, retrieving email messages, and storing email messages at local mail stores is discussed in greater detail with reference to FIGS. 30 and 31, further discussion of the logging into email accounts, retrieving email messages, and storing email messages is omitted here. However, it is worthwhile to note that the instantiating of an IM user interface results in the automatic retrieval and storage of all of the user&#39;s email messages and the storage of the retrieved email messages according to their originating email account. Additionally, as seen from the component architecture of FIG. 1 and FIGS. 3A through 3C, the input of a single login name and password to the IM user agent  104  results in retrieval of all of the user&#39;s contacts&#39; IM Internet presence information. Furthermore, as seen from FIGS. 1 through 3C, the address book object  108  and the address book database  110  provide an interface between the IM user agent  104  and the email user agent  106 , thereby providing integration of IM and email.  
     [0069]FIGS. 4A through 4C are block diagrams showing instantiation of various email components in one embodiment of the system. While one embodiment of the message center  212  is shown in greater detail with reference to FIG. 9, a discussion of the functionality of the message center  212  is described below with reference to FIGS. 4A through 4C. As described with reference to FIGS. 2A through 2C, upon receiving a single login name and password, the tray manager  102  automatically logs the user into all of the user&#39;s IM accounts as well as all of the user&#39;s email accounts.  
     [0070] One option that is provided to the user at the message center  212  is the option to edit entries in the address book database  110 . This is shown in FIG. 4A. If the user selects the option to edit the address book database  110 , then the message center  212  generates a request  442  to the email user interface  210  to generate an address book user interface  404 . The email user interface  210  conveys the request  444  to the tray manager  102 , which receives the request and generates a command  446  to the email user interface  210  to instantiate the address book user interface  404 . The command  446  includes a pointer to the address book object  108 , which eventually permits the address book user interface  404  to modify the address book database  110  through the address book object  108 . The email user interface  210 , in response to the command  446  from the tray manager  102 , instantiates the address book user interface  404  with direct access to the address book object  108 . Since editing of address book databases are well known in the art, further discussion of editing address book databases is omitted here. However, it is worthwhile to note that, unlike prior systems, the address book user interface  404  permits a user to edit the address book database  110  by adding and removing both email and IM contact information for contacts having various IM and email accounts (e.g., America On-Line (AOL), Microsoft Network (MSN), Yahoo, BellSouth, etc.).  
     [0071] Another option that is provided to the user at the message center  212  is the option to compose a new email message to a contact. This is shown in FIG. 4B. If the user selects the option to compose a new email message, then the message center  212  generates a request  452  to the email user interface  210  to generate a compose window  408 . The email user interface  210  conveys the request  454  to the tray manager  102 , which receives the request and generates a command  456  to the email user interface  210  to instantiate the compose window  408 . The command  456  includes a pointer to the address book object  108 , which eventually permits the compose window  408  to access the address book database  110  through the address book object  108 , thereby permitting retrieval of email addresses of contacts. The email user interface  210 , in response to the command  456  from the tray manager  102 , instantiates the compose window  408  with direct access to the address book object  108 . Since composing new messages is well known in the art, further discussion of composing new messages is omitted here.  
     [0072] Yet another option that is provided to the user at the message center  212  is the option to read an email message from a contact. This is shown in FIG. 4C. In operation, all of the user&#39;s email messages are displayed to the user at the message center  212 . Upon receiving a selection of one of the displayed email messages for reading by the user, the message center  212  generates a request  462  to the email user interface  210  to generate a read window  412 . The request  462  includes information related to the selected email message, such as a globally-unique identifier (GUID) associated with the selected email message. The email user interface  210  conveys the request  464  to the tray manager  102 , which receives the request  464  and generates a command  466  to the email user interface  210  to instantiate the read window  412 . The command  466  includes a pointer to the address book object  108  and a pointer to the email user agent  106 . The pointer to the address book object  108  eventually permits the read window  412  to access the address book database  110  through the address book object  108 . This is shown in greater detail with reference to FIG. 5. The email user interface  210 , in response to the command  466  from the tray manager  102 , instantiates the read window  412 . Upon being instantiated, the read window  412  issues a request to the email user agent  106  to retrieve the selected email message. The email user agent  106  receives the request and retrieves the selected email message from the mail store  206 . The retrieved email message is conveyed from the email user agent  106  to the read window  412  and displayed to the user at the read window  412 . While reading of email messages is well known in the art, it is worthwhile to note that, unlike prior systems, the system of FIG. 4C permits a user to read email messages from any of the user&#39;s email accounts (e.g., a BellSouth email account, an AOL email account, a Yahoo email account, an MSN email account, etc.).  
     [0073]FIG. 5 is a block diagram showing another aspect of the read window of FIG. 4C. While one embodiment of the read window  412  is shown in detail with reference to FIG. 10, the functionality of the read window  412  is described below with reference to FIG. 5. As shown in FIG. 5, the read window  412  is instantiated by the email user interface  210  so that the read window  412  has direct access to the address book object  108 . In this regard, any information that is available to the address book object  108  may also be available to the read window  412 . In operation, upon receiving the selected email message from the email user agent  106 , the read window  412  extracts all of the email addresses in the email message. For example, the sender&#39;s email address is extracted from the email message. Similarly, if courtesy copies (cc) of the email message were sent to other recipients, then the email addresses of the other recipients are also extracted from the email message. Upon extracting all of the email addresses from the email message, the read window  412  generates a request  502  to the address book object  108  for IM Internet presence information of the contacts at the extracted email addresses. In this regard, the request  502  includes the extracted email addresses.  
     [0074] Upon receiving the request  502 , the address book object  108  generates a query  504  to the address book database  110  to request all IM addresses that are correlated to the extracted email addresses. If an extracted email address is not found in the address book database  110 , then an error message is returned to the address book object  108  to indicate that no IM Internet presence information is available for that email address. Similarly, if an extracted email address is not correlated to any IM address, then an error message is returned to the address book object  108  to indicate that no IM Internet presence information is available for that email address. If, on the other hand, the extracted email address is found in the address book database  110 , and the extracted email address is correlated to at least one IM address, then the IM address associated with the extracted email address is retrieved from the address book database  110  by the address book object  108 . This process is repeated for each of the extracted email addresses until either an error message or at least one IM address is returned for each of the extracted email addresses.  
     [0075] If an error message is returned to the address book object  108  for an extracted email address, then the error message is conveyed by the address book object  108  to the read window  412 , which displays to the user that no IM Internet presence information is available for that extracted email address. If, on the other hand, an IM address is returned, then the address book object  108  queries the IM user agent  104 , using the IM address, for IM Internet presence information of the contact at the retrieved IM address. The IM user agent  104 , already having the IM Internet presence information of all of the user&#39;s contacts (see FIGS. 2A through 3C), receives the query  508  and returns IM Internet presence information for the retrieved IM address to the address book object  108 . The IM Internet presence information  512  is then conveyed by the address book object  108  to the read window  412 . The read window  412  subsequently displays the IM Internet presence information next to its respective email address, thereby providing the user with a contact&#39;s IM Internet presence information at the email read window  412 .  
     [0076] As seen from the embodiment of FIG. 5, by having the address book object  108  interface the IM user agent  104 , the address book database  110 , and the email read window  412 , the embodiment of FIG. 5 permits a user to determine IM Internet presence information directly from an email read window  412 . Also, since IM is integrated with email, it is now possible to launch an IM chat session with an email contact directly from the read window  412 . This is described in greater detail with reference to FIG. 10.  
     [0077]FIGS. 6A through 6C are block diagrams showing instantiation of various IM components in one embodiment of the system. While the roster window  310  is shown in greater detail with reference to FIG. 14, the functionality of the roster window  310  is described with reference to FIGS. 6A through 6C. As shown in FIG. 6A, one option that is provided to the user at the roster window  310  is the option to edit entries in the address book database  110 . If the user selects the option to edit the address book database  110 , then the roster window  310  generates a request  604  to the IM user interface  308  to generate an address book user interface  404 . The IM user interface  308  conveys the request  606  to the tray manager  102 , which receives the request and generates a command  608  to the IM user interface  308  to instantiate the address book user interface  404 . The command  608  includes a pointer to the address book object  108 , which eventually permits the address book user interface  404  to modify the address book database  110  through the address book object  108 . The IM user interface  308 , in response to the command  608  from the tray manager  102 , instantiates the address book user interface  404 , which is instantiated with direct access to the address book object  108 . Since editing of address book databases are well known in the art, further discussion of editing address book databases is omitted here. However, it is worthwhile to note that, unlike prior systems, the address book user interface  404  permits a user to edit the address book database  110  by adding and removing both email and IM contact information for contacts having various IM and email accounts (e.g., AOL, MSN, Yahoo, BellSouth, etc.).  
     [0078] As shown in FIG. 6B, another option that is provided to the user at the roster window  310  is the option to transfer files to a contact. If the user selects the option to transfer a file, then the roster window  310  generates a request  642  to the email user interface  210  to generate a file transfer window  612 . The email user interface  210  conveys the request  644  to the tray manager  102 , which receives the request and generates a command  646  to the email user interface  210  to instantiate the file transfer window  612 . The command  646  includes a pointer to the address book object  108 , which eventually permits the file transfer window  612  to access the address book database  110  through the address book object  108 , thereby permitting retrieval of email addresses and IM addresses of the contacts. The email user interface  210 , in response to the command  646  from the tray manager  102 , instantiates the file transfer window  612  with direct access to the address book object  108 . Since transferring files from IM roster windows is well known in the art, further discussion of transferring files from IM roster windows is omitted here. However, it is worthwhile to note that, unlike prior systems, the system of FIG. 6B permits file transfers to contacts at various IM services (e.g., AOL IM, MSN IM, Yahoo IM, BellSouth IM, etc.) and at various email services (e.g., AOL email, MSN email, Yahoo email, BellSouth email, etc.), regardless of the contacts&#39; IM or email service provider.  
     [0079] As shown in FIG. 6C, yet another option that is provided to the user at the roster window  310  is the option to chat with a contact. In operation, all of the user&#39;s IM contacts and their respective IM Internet presence information are displayed to the user at the roster window  310 . Upon receiving a selection of one of the IM contacts by the user, the roster window  310  generates a request  652  to the email user interface  210  to generate a chat window  614 . The request  652  includes information related to the selected contact. The email user interface  210  conveys the request  654  to the tray manager  102 , which receives the request  654  and generates a command  656  to the IM user interface  308  to instantiate the chat window  614 . The command  656  includes a pointer to the IM user agent  104 . The IM user interface  308 , in response to the command  656  from the tray manager  102 , instantiates the chat window  614 . Upon being instantiated, the chat window  614  issues a request to the IM user agent  104  to establish a chat session with the selected contact. Since the initiation of chat sessions at chat windows is well known in the art, further discussion of initiating chat sessions at chat windows is omitted. However, it is worthwhile to note that, unlike prior systems, the system of FIG. 6C permits a user to initiate a chat session and engage in a chat session with any of the contacts regardless of the contacts&#39; IM account (e.g., BellSouth IM account, AOL IM account, Yahoo IM account, MSN IM account, etc.). Greater details related to IM chatting with various contacts at various IM accounts may be found in U.S. provisional patent application serial Nos. 60/411,336 and 60/419,613, and U.S. patent application Ser. Nos. 10/274,408, 10/274,478, and 10/274,405, which are incorporated herein by reference in their entireties.  
     [0080] As seen from the embodiments of FIGS. 6A through 6C, by having the address book object  108  interface the IM user agent  104 , the address book database  110 , and the email user agent  106 , greater integration between IM and email is provided.  
     [0081]FIG. 7 is a block diagram showing an overview of component architecture related to both IM and email services. Since the various components have been described in detail with reference to FIGS. 1, 2A through  2 C,  3 A through  3 C,  4 A through  4 C,  5 , and  6 A through  6 C, only a truncated discussion of each of the IM and email components is presented here. As shown in FIG. 7, the address book object  108 , the address book database  110 , the address book user interface  404 , and the tray manager  102  provide an interface between the various email components  106 ,  204 ,  206 ,  210 ,  212 ,  412 ,  408  and the various IM components  104 ,  304 ,  308 ,  310 ,  614 ,  612 . In other words, integration of email and IM may be achieved by having a central address book database  110  that is accessible through an address book object  108  to both the various IM components  104 ,  304 ,  308 ,  310 ,  614 ,  612  and the various email components  106 ,  204 ,  206 ,  210 ,  212 ,  412 ,  408 . The mechanism for sorting the various email messages into their respective folders is shown with reference to FIGS. 30 and 31.  
     [0082]FIG. 8 is a diagram showing one embodiment of the mail store  206  of FIG. 7 in greater detail. As shown in FIG. 8, the mail store  206  comprises several folders such as, for example, an inbox folder  810 , a pending email folder  820 , a sent items folder  830 , a saved items folder  840 , and a drafts folder  850 . As described with reference to FIGS. 1 through 3C, email messages from all of the user&#39;s email accounts are retrieved and stored at the mail store  206 . The inbox folder  810  stores all of the received email messages from the various email accounts. Thus, for example, if a user has an AOL email account, an MSN email account, and a Yahoo email account, then the received email messages are retrieved from these various accounts and stored at the mail store  206 . In an example embodiment, all of the email messages that are retrieved from the user&#39;s AOL email account are stored in an AOL folder  860 ; all of the email messages that are retrieved from the user&#39;s MSN account are stored in an MSN folder  870 ; and all of the email messages that are retrieved from the user&#39;s Yahoo account are stored in a Yahoo folder  880 . Similarly, any pending email, sent item, saved item, or drafts of emails may be saved in similar sub-folders (not shown) in their respective folders  820 ,  830 ,  840 ,  850 .  
     [0083] In another embodiment, if the user receives an email message from an AOL contact, then the system  202  (FIG. 2A) is configured so that any reply to that AOL contact is directed through the user&#39;s AOL account. Similarly, if the user receives an email message from an MSN contact, then the system is configured so that any reply to that MSN contact is directed through the user&#39;s MSN account. Thus, for example, if an email message  862  from Larry@AOL.com is retrieved from the user&#39;s AOL email account, then any reply to that email from the user will be, by default, directed through the user&#39;s AOL email account. Thus, when Larry@AOL.com receives a reply from the user, the reply will appear to Larry@AOL.com as if it was sent from the user&#39;s AOL email account. Similarly, if an email message  874  from JAdams@MSN.com is retrieved from the user&#39;s MSN email account, then any reply to that email from the user will be, by default, directed through the user&#39;s MSN email account. Thus, when JAdams@MSN.com receives a reply from the user, the reply will appear to JAdams@MSN.com as if it was sent from the user&#39;s MSN email account. In another embodiment, the user may override the default settings and select a different mail server through which to send an email message. This process is described in greater detail with reference to FIGS. 30 and 31.  
     [0084] The mail store  206  of FIG. 8, unlike prior systems, comprises email messages from various email accounts (e.g., AOL, MSN, Yahoo), which are now accessible to the user through a single consolidated mail store  206 . This permits the user to access all of the user&#39;s emails from all of the user&#39;s various email accounts without the inconvenience of having to manually access multiple separate email accounts.  
     [0085]FIG. 9 is a diagram showing one embodiment of a user interface  935  for the message center  212  of FIG. 7 in greater detail. As shown in FIG. 9, the user interface  935  comprises a get mail (or read) selection button  910 , a write (or compose) selection button  915 , an options selection button  920 , and an address book database selection button  925 . If a user selects the address book database selection button  925 , then an address book user interface  404  is launched or instantiated as described with reference to FIG. 4A. If the user selects the write (or compose) selection button  915 , then a compose window  408  is launched or instantiated as described with reference to FIG. 4B. Similarly, if the user selects the get mail (or read) selection button  910 , then a read window  412  is launched or instantiated as described with reference to FIG. 4C.  
     [0086] In addition to the selection buttons  910 ,  915 ,  920 ,  925 , the message center  212  includes a display screen  945 , which displays received email messages and displays a preview pane having a preview of a selected email message. The display screen  945  also includes message response options such as replying to the email, forwarding the email, reading the full email (rather than merely previewing the email in the preview pane), deleting the email, or printing the email. Also, the message center  212  includes a folder list having a plurality of folders  901   a ,  901   b ,  901   c ,  920 , which have various email messages that are organized in similar fashion to the mail store  206  of FIG. 8. Thus, for example, the folders may be organized according to the user&#39;s various email accounts (e.g., MSN, AOL, Yahoo, etc.), and each of these folders may be further organized into sub-folders such as, for example, inbox sub-folders  902 , saved items sub-folders  903 , drafts sub-folders  904 , pending items sub-folders  905 , etc.  
     [0087] In an example embodiment, the user may organize the various folders and sub-folders according the user&#39;s particular needs or desires. Since the organization and display of folders is well known in the art, further discussion of organization and display of folders is omitted here. However, it is worthwhile to note that, unlike prior systems, the message center  212  of FIG. 9 permits a user to view a listing of all of the user&#39;s email messages from all of the user&#39;s email accounts at a single central location. Thus, the message center  212  removes the inconvenience of manually accessing multiple email accounts to retrieve all of the user&#39;s email messages.  
     [0088]FIG. 10 is a diagram showing one embodiment of a user interface  1055  for the read window  412  of FIG. 7 in greater detail. As shown in FIG. 10, one embodiment of the read window  412  comprises several selection options that a user may select. For example, a user may select an email reply button  1042 , an email forward button  1044 , a print button  1046 , a delete button  1048 , or an IM start button  1050  from the email read window  412 . If the user selects the email reply button  1042  or the email forward button  1044 , then an email compose window  408  is launched or instantiated as described with reference to FIG. 4B. If the user selects the print button  1046 , then the email is printed to a local or network printer (not shown). If the user selects the delete button  1048 , then the email message is deleted. Since these functions are well known in the art, further discussion of email reply, email forward, print, and delete functions are omitted here. However, it is worthwhile to note that, unlike prior systems, the selection of the reply button  1042 , in one embodiment, permits the user to reply to the email message using the particular email account through which the email message was received. Thus, for example, if the email message is received through the user&#39;s BellSouth email account, then the reply to the email would be transmitted through the user&#39;s BellSouth email account. This is discussed in greater detail with reference to FIGS. 30 and 31.  
     [0089] In addition to the conventional selection buttons  1042 ,  1044 ,  1046 ,  1048 , the read window  412  comprises an IM start button  1050 . The IM start button  1050  permits a user to launch an IM session with various contacts from the read window  412 . As described with reference to FIG. 5, the read window  412  provides IM Internet presence information for each of the email addresses shown on the read window  412 . Thus, for example, if a user receives an email message from Larry@yahoo.com, and the email message is cc′d to Moe@AOL.com, Shemp@hotmail.com, and contact 1 @MSN.com, then an IM Internet presence indication is displayed by each of the email addresses. Thus, for the contacts shown in FIG. 10, the email address and at least one corresponding IM address was found in the user&#39;s address book database  110  for Larry@Yahoo.com, Moe@AOL.com, and contact 1 @MSN.com. Conversely, either the email address or a corresponding IM address was not found for Shemp@hotmail.com. Additionally, as shown in FIG. 10, the retrieved IM Internet presence information for Larry@Yahoo.com, Moe@AOL.com, and contact 1 @MSN.com indicated that Larry@Yahoo.com was present while Moe@AOL.com and contact 1 @MSN.com were not present.  
     [0090] Thus, as shown in the read window  412 , an icon  1062  is displayed next to Larry@Yahoo.com to indicate that Larry@Yahoo.com is present; a different icon  1064  is displayed next to Moe@AOL.com and contact 1 @MSN.com to indicate that Moe@AOL.com and contact 1 @MSN.com are not present; and no icon is displayed next to Shemp@hotmail.com to indicate that no IM Internet presence information could be obtained for Shemp@hotmail.com. As shown in FIG. 10, the read window  412  displays the IM Internet presence information for all of the email addresses shown in the email message.  
     [0091] Since it is indicated that Larry@Yahoo.com is present, if the user selects Larry@Yahoo.com and selects the IM start button  1050 , then an IM session with Larry@AOL.com is launched from the user&#39;s read window  412 . On the other hand, if the user selects Moe@AOL.com, Shemp@hotmail.com, or contact 1 @MSN.com and selects the IM start button  1050 , then an error message is displayed to the user to indicate that the selected contacts are either not present, or that no IM session may be initiated with the selected contacts (e.g., no email address found in the address book database  110 , or no corresponding IM address found in the address book database  110 ).  
     [0092] If a contact is present, and the user has selected to initiate an IM session with the contact, then the read window  412  generates a request to the address book object  108  to initiate an IM session with the selected contact. The address book object  108  receives the request and forwards the request to the IM user agent  104 . The IM user agent  104  receives the request and instantiates an IM session between the user and the selected contact. In this regard, the IM user agent  104  issues an IM session invitation to the selected contact, and awaits an IM session acceptance of the IM session invitation. Upon receiving the IM session acceptance, the IM session is established. Since the initiation of IM sessions is described in detail in U.S. provisional patent application serial Nos. 60/411,336 and 60/419,613, and U.S. patent application Ser. Nos. 10/274,408, 10/274,478, and 10/274,405, further discussion of IM session instantiation is omitted here. However, it is worthwhile to note that, unlike prior systems, the read window  412  of FIG. 10 permits a user to directly launch or initiate an IM session with a contact from the read window  412 , thereby providing greater integration between email and IM.  
     [0093] As shown with reference to FIG. 10, the read window  412  displays to the user a received email message from a contact having IM Internet presence information related to that contact. Similarly, the read window  412  displays to the user the IM Internet presence information related to any other contact that may have been cc′d on the displayed email message. Furthermore, if it is indicated that the contact is present, then the read window  412  permits a user to launch or initiate an IM session with the contact. Thus, by providing IM Internet presence information and the ability to initiate an IM session, the email read window  412  of FIG. 10 provides for greater IM and email integration. In another embodiment, the IM Internet presence information and the launching of the IM session may be available to the user at the preview pane of FIG. 9.  
     [0094]FIG. 11 is a diagram showing one embodiment of the address book user interface  404  of FIG. 7 in greater detail. As shown in FIG. 11, the address book user interface  404  comprises a list of contacts  1110 . In an example embodiment, the list of contacts comprises the first and last names of the contacts. If the contact has an email address  1115 , then this email address  1115  is listed beside its respective contact  1110 . Additional details  1120  are also available for each contact  1110 . In addition to having the list of contacts  1110 , the list of email addresses  1115 , and corresponding detailed information  1120  for the contacts, the address book user interface  404  also comprises a write (or compose) selection button  1125 , a new contact selection button  1130 , an new email list selection button  1135 , a delete selection button  1140 , an edit selection button  1145 , and a cancel selection button  1150 .  
     [0095] The write (or compose) selection button  1125  permits the user to compose an email message to a selected contact. Thus, in operation, if the user selects a contact from the list of contacts  1110  and selects the write (or compose) selection button  1125 , then the address book user interface  404  issues a request to the address book object  108  to launch or instantiate a compose window  408 . Since the launching or instantiating of the compose window  408  is described with reference to FIG. 4B, further discussion of launching or instantiating the compose window  408  is omitted here.  
     [0096] The new contact selection button  1130  permits the user to add new contact information to the address book database  110 . Thus, in operation, if the user selects the new contact selection button  1130 , the address book user interface  404  issues a request to the address book object  108  to launch or instantiate a user interface for adding new contact information. The user interface for adding new contact information is discussed in greater detail with reference to FIG. 12. Similarly, the selection of the new email list selection button  1135  launches or instantiates a user interface for creating a new email list.  
     [0097] If the user selects a contact or a group of contacts from the list of contacts  1110  and selects the delete selection button  1140 , then the delete selection is conveyed from the address book user interface  404  to the address book object  108 . Upon receiving the delete selection, the address book object  108  deletes the selected contact or group of contacts from the address book database  110 .  
     [0098] The edit selection button  1145  is similar to the new contact selection button  1130  in that a user interface for editing a contact is launched or instantiated in response to the selection of the edit selection button  1145 . Thus, in operation, if a user selects a contact or a group of contacts from the list of contacts  1110  and selects the edit selection button, then the address book user interface  404  issues a request to the address book object  108  to retrieve information related to the contact or the group of contacts from the address book database  110 . Upon retrieving the information, the address book object  108  launches or instantiates an edit window (not shown) having the contact information, thereby permitting the user to edit the information. Once the information has been edited, the address book user interface  404  conveys the changes to the address book object  108 , which stores the changes in the address book database  110 .  
     [0099] The cancel selection button  1150  closes the address book user interface  404 .  
     [0100] As shown with reference to FIG. 11, the address book user interface  404  permits a user to add new contact information and edit presently existing contact information. Since adding new contact information and editing contact information are well known in the art, further discussion of adding new contact information and editing new contact information is omitted here. However, it is worthwhile to note that, unlike prior systems, the address book user interface  404  permits the user to add and edit information related to both email and IM from a single address book user interface  404 .  
     [0101]FIG. 12 is a diagram showing one embodiment of a user interface  1235  for adding new contact information. As shown in FIG. 12, the user interface  1235  comprises a name input box  1260 , which permits a user to input a name of a contact. In addition to the name input box  1260 , the user interface  1235  comprises an email address input box  1265 , which permits a user to input one or more email addresses associated with the contact. The user interface  1235  further comprises an email list input box  1270 , which permits the user to place the contact in a specified email list created by the user. Similarly, the user interface  1235  comprises an IM address input box  1280 , which permits the user to input one or more IM addresses associated with the contact. In an example embodiment, the email addresses and IM addresses are sorted according to priority. The priority sorting of IM addresses and email addresses is shown in greater detail with reference to FIGS. 13A and 13B.  
     [0102] Likewise, street addresses, phone numbers, and other detailed information may be entered at the user interface  1235  at the address input box  1285 , the phone number input box  1275 , and the description input box  1290 , respectively. Once the user has entered information related to the contact into their respective boxes  1260 ,  1265 ,  1270 ,  1275 ,  1280 ,  1285 ,  1290 , the user interface  1235  conveys the information to the address book object  108 , which stores the information in the address book database  110 .  
     [0103]FIGS. 13A and 13B are diagrams showing one embodiment of the address book database  110  of FIG. 7 in greater detail. As described with reference to FIG. 10, once information associated with a contact has been entered by the user, this information is stored in the address book database  110 . As described with reference to FIGS. 1 through 3C, the address book database  110  is one component through which email and IM integration is achieved.  
     [0104] The address book database  110  comprises entries that are sorted according to contact identifiers  1310 . In one embodiment, the contact identifier  1310  is an identification number that is unique to each contact. Thus, no two contacts share the same contact identifier  1310 . In another embodiment, the contact identifier  1310  is the name of the contact.  
     [0105] In any event, every piece of information related to a specific contact is correlated to the contact identifier  1310 , thereby permitting a lookup of information based on the contact identifier  1310 . Thus, as shown in FIGS. 13A and 13B, if an email address for a contact is entered as described with reference to FIG. 12, then this email address  1320  is stored in the address book database  110  so that it is correlated to the contact identifier  1310  for that contact. Similarly, if an IM address  1330 ,  1340 ,  1350  is entered for the contact, then the IM address  1330 ,  1340 ,  1350  is stored in the address book database  110  so that it is correlated to the contact identifier  1310  for that contact. Phone numbers  1340 , fax numbers  1350 , etc. are similarly stored in the address book database  110 . Thus, the address book object  108  may determine any information associated with a particular contact by accessing the address book database  110  and looking up the contact identifier  1310  of the contact.  
     [0106] For example, in operation, if the address book object  108  is provided an email address, as described with reference to FIG. 5, the address book object  108  may access the address book database  110  using the email address to determine a corresponding contact identifier  1310  for that email address. Once the corresponding contact identifier  1310  is determined, the address book object  108  may retrieve the IM address of the contact from the address book object  108  using the contact identifier  1310 . Thus, as described with reference to FIG. 5, if the email address corresponds to one or more IM addresses, then these IM addresses may be returned to the address book object  108 , thereby permitting the address book object  108  to query the IM user agent  104  for IM Internet presence information associated with the contact identifier.  
     [0107] In an example embodiment, the IM addresses  1330 ,  1340 ,  1350  are stored in order of priority. In other words, if a user prefers to engage in an IM session with a contact at a particular IM address (e.g., Yahoo IM address, AOL IM address, MSN IM address, BellSouth IM address, etc.), then the particular IM address is stored as the first IM address  1330 . Similarly, if the contact has multiple IM addresses, then the user may arrange each IM address in the order of the user&#39;s preference. Thus, in operation, if a user launches an IM session with a contact from the read window  412 , as described with reference to FIGS. 5 and 9, then the address book object  108  issues an IM session invitation to the first IM address  1330  stored in the address book database  110 . If the contact is not present at the first IM address  1330 , then the address book object  108  issues an IM session invitation to the second IM address  1340 . The address book object  108  continues in a “round-robin” fashion until an IM session acceptance is received from one of the IM addresses. Since the address book object  108  issues invitations in order of priority as stored in the address book database  110 , an IM session will be established using a higher priority IM address or a more preferred IM address before being established using a lower priority IM address.  
     [0108]FIG. 14 is a diagram showing one embodiment of the roster window  310  of FIG. 7 in greater detail. As shown in FIG. 7, the roster window  310  comprises a list of contacts  1404 , which may be sub-divided according to their respective IM accounts. Thus, for example, if the user&#39;s contacts have MSN IM accounts and AOL IM accounts, then the contacts having MSN accounts  1405  are grouped together while the contacts having AOL accounts  1407  are grouped together. Since the roster window  310  is described in detail in U.S. provisional patent application serial Nos. 60/411,336 and 60/419,613, and U.S. patent application Ser. Nos. 10/274,408, 10/274,478, and 10/274,405, further discussion of the roster window  310  is omitted here. However, it is worthwhile to note that, unlike prior systems, the roster window  310  of FIG. 14 permits a user to initiate an IM session with contacts at various IM addresses without manually logging into multiple IM accounts.  
     [0109]FIG. 15 is a diagram showing one embodiment of the chat window  614  of FIG. 7 in greater detail. As shown in FIG. 15, the chat window  614  comprises a transcript display window  1530 , a user input window  1540 , a first roster window  1555 , and a second roster window  1565 . The transcript display window  1530  displays IM messages that are typed by all of the participants in the IM chat session. Thus, if Larry, Curly, Moe, Shemp, and the user are engaged in an IM chat session, then each of the messages typed by the participants is displayed in the transcript display window  1530 . The user input window  1540  displays the IM messages that are being typed by the user:  
     [0110] The first roster window  1555  shows all of the contacts that are currently chatting in the chat window  614 , while the second roster window  1565  displays all of the contacts that are present on the Internet but not chatting in the chat window  614 . If the user chooses to invite a contact from the second roster window  1565  to the current chat session in the chat window  614 , then the user may select the contact from the second roster window  1565  and “drag and drop” that contact into the first roster window  1555 , thereby effectively inviting that contact into the current chat session. Similarly, if the user wishes to remove a currently chatting contact from the IM chat session, then the user may “drag and drop” that contact from the first roster window  1555  to the second roster window  1565 . Thus, as shown with reference to FIG. 15, each of the participants of the IM session may invite or remove participants from the current IM chat session by moving the contacts from one roster window to the other roster window.  
     [0111] Although chatting between multiple participants from a common IM service is known in the art, the embodiment of FIG. 15 permits chatting between multiple participants from different IM services. Thus, for example, Larry (in FIG. 15) may be using a Yahoo IM service, while Curly is using an AOL IM service, while Moe and Shemp may each be using an MSN IM service.  
     [0112] In operation, when the user types an IM message at the user input window  1540 , the typed message is translated into the native protocol associated with each of the other participants&#39; IM services. Thus, any message typed by the user is displayed to each of the other participants in the IM chat session. Similarly, when the other participants type messages from their native IM windows, these messages are translated from the native protocols to an abstraction protocol, and the translated messages are displayed to the user at the IM chat window  614 . Since translations to and from native protocols is described in detail in U.S. provisional patent application serial Nos. 60/411,336 and 60/419,613, and U.S. patent application Ser. Nos. 10/274,408, 10/274,478, and 10/274,405, further discussion of translations into native protocols is omitted here.  
     [0113] Additionally, one embodiment of the system of FIG. 15 provides a mechanism by which the other participants from the various other IM services may also engage in the IM session with the other participants. In other words, even if Larry only has a Yahoo IM account and Moe only has an MSN account, it is possible for Larry to engage in an IM chat session with Moe through the user&#39;s IM chat window  614 .  
     [0114] In this regard, the system of FIG. 15 is configured so that when Larry sends an IM message to the user, the message is received by the user&#39;s system, reformatted for Moe&#39;s IM service, and conveyed to Moe. Ordinarily, if the user&#39;s system merely conveys the message to Moe, then Moe will see that the message originates from the user, rather than from Larry. Thus, in order to seamlessly provide Moe with Larry&#39;s IM message, the user&#39;s system removes the user&#39;s information for all of Larry&#39;s IM messages, and substitutes Larry&#39;s information in place of the user&#39;s information. In this regard, when Moe receives an IM message from Larry through the user&#39;s IM account, the message will appear as if it were directly sent to Moe, rather than being cascaded through the user&#39;s IM account.  
     [0115] In one embodiment, the user&#39;s IM address is removed from the IM message by inserting an appropriate number of delete characters into the text stream adjacent to the user&#39;s IM address. Thus, for example, if the user&#39;s IM address is ten characters in length, then, by inserting ten delete characters adjacent to the user&#39;s IM address, the user&#39;s IM address will be deleted from the text stream. Similarly, if the user&#39;s IM address is 25 characters, then the insertion of 25 delete characters effectively removes the user&#39;s IM address from the forwarded text stream. Thus, regardless of the originator of the IM message, the user&#39;s system may remove the user&#39;s information from the IM message prior to forwarding the IM message to the other IM participants, thereby seamlessly interfacing the various IM services to one another through the user&#39;s IM account.  
     [0116] As described with reference to FIG. 15, one embodiment of the system provides for an IM session with multiple participants from multiple different IM services. Thus, in addition to seamlessly integrating email and IM, one embodiment of the system permits seamless integration of IM services across multiple different IM platforms.  
     [0117]FIG. 16 is a diagram showing a thread history database  1610  in accordance with another embodiment of the invention. As described with reference to FIGS. 5 and 10, a user may launch an IM session directly from an email read window  412 . Thus, unlike prior systems, an email message may be threaded to an IM chat session. In this regard, when an IM chat session is launched from an email read window, the IM chat session is tagged with a pointer to the email message.  
     [0118] Similarly, a participant in a chat session may email another participant in the chat session, thereby threading an email message to a chat session. In this regard, when an email message is launched from an IM chat session, the email message is tagged with a pointer to the IM chat session. In order to track threads across IM and email, a thread history database  1610  is maintained. For simplicity, the email message or IM session from which a subsequent email message or IM session is launched is referred to as the “parent,” and the email message or IM session that is launched from the parent is referred to as the “child.” 
     [0119] In operation, when a child email message is generated from a parent IM chat window  614  (or a parent compose window  408 ), a globally unique identifier (GUID) is generated along with the child email message. Similarly, for each reply or forwarded email message, a GUID is generated. A pointer to the generated GUID is also created in the parent IM chat window, thereby linking the parent IM chat session to the child email message. Similarly, a pointer to the GUID of the parent IM chat session is created in the child email message, thereby linking the child email message to the parent IM chat session. In an example embodiment, the GUID is a 128-bit number that is unique to that message. Since GUID generation is well known in the art, further discussion of GUID generation is omitted here.  
     [0120] Likewise, when an IM chat session is established (see FIG. 6C), a corresponding chat session transcript is generated for that IM chat session. Similar to the generation of GUIDs for email messages, a GUID is generated for each chat session transcript. Thus, regardless of whether an email message is generated or whether a chat session is initiated, each message or transcript is associated with a GUID. Additionally, when a child IM chat session is established or launched from a parent email window, a pointer to the GUID of the child IM chat session is created in the parent email message, thereby linking the child IM chat session to the parent email message. Similarly, a pointer to the GUID of the parent email message is created in the child IM chat session, thereby linking the child IM chat session to the parent email message.  
     [0121] Each of the email messages or chat transcripts are stored in the thread history database  1610 , along with its GUID, in a tree structure. As shown in FIG. 16, each email message is displayed with an email icon  1620 , while each IM chat transcript is displayed with an IM icon  1630 , thereby distinguishing email threads from chat threads.  
     [0122] In operation, when a user selects one of the email messages in the thread history, the selected email message is displayed to the user in an email read window  412 . The email read window  412  also includes the pointer to the parent email message (or parent IM chat session) so that the user may track the history of the message. Similarly, the email read window  412  includes the pointer to any child email message (or child IM chat session) so that the user may track subsequent email messages (or subsequent IM chat sessions) that were launched from the displayed email message.  
     [0123] Likewise, when the user selects one of the IM chat sessions in the thread history, a transcript of the selected IM chat session is displayed to the user in an IM chat window  614 . The IM chat window  614  also includes a pointer to the parent email message (or parent IM chat session) so that the user may track the history of the IM chat session. Similarly, the IM chat window  614  includes the pointer to any child email message (or child IM chat session) so that the user may track subsequent email messages (or subsequent IM chat sessions) that were launched from the displayed IM chat session transcript.  
     [0124] Since storing of thread histories, generally, is known in the art, further discussion of storing thread histories is omitted here. However, it is worthwhile to note that, unlike prior systems, the integration of email and IM as shown in the embodiments of FIGS. 1 through 15 permits threading of both email and IM messages.  
     [0125] In another embodiment, the thread history database  1610  permits the user to access any related message, whether email-related or IM-related, from the tree-structure. Thus, for example, if a user wishes to view an IM chat transcript associated with a particular email message, then the user may select the IM chat transcript from the thread history database  1610  and open the IM chat transcript for viewing. Similarly, if the user wishes to view an email message associated with a particular IM chat session, the email message may be selected from the thread history database  1610  for viewing by the user.  
     [0126] As shown with reference to FIG. 16, by having a thread history database  1610  having both IM-related transcripts and email-related messages, a user may track each message or transcript according to its respective thread history.  
     [0127] As shown in FIGS. 1 through 16, several embodiments of systems for integrating email and IM services is shown. The invention, however, may also be seen as providing methods for integrating email and IM services. Several embodiments of methods for integrating email and IM services is shown with reference to FIGS. 17 through 27.  
     [0128]FIG. 17 is a flowchart showing one embodiment of a method for integrating email and IM services in which IM Internet presence information is displayed on an email read window. As shown in FIG. 17, one embodiment of the method begins when an email message is received ( 1720 ) from a contact. The received ( 1720 ) email message has an email address of the contact. The received ( 1720 ) email message is displayed ( 1730 ) to a user. Additionally, IM presence information is displayed ( 1740 ) on the email message. In an example embodiment, the method of FIG. 17 may be performed by the system as described with reference to FIGS. 1 through 5 and FIGS. 9 and 10. Thus, in an example embodiment, the IM presence information is displayed ( 1740 ) adjacent to the email address of the contact. In another embodiment, the email message has email addresses of multiple contacts to whom the email message was directed. In that embodiment, the IM presence information is displayed ( 1740 ) on the email message adjacent to each of the contacts&#39; email addresses.  
     [0129]FIG. 18 is a flowchart showing another embodiment of a method for integrating email and IM services in which an IM session may be initiated from an email read window. As shown in FIG. 18, another embodiment of the method begins when an email message from a contact is displayed ( 1820 ) to the user at an email read window. The email message includes an email address of the contact. Upon displaying ( 1820 ) the email message to the user, the system awaits user input. When the user provides the user input, the user input is received ( 1830 ) at the displayed email message. In response to the received ( 1830 ) user input, an IM session is initiated ( 1840 ) between the user and the contact. In another embodiment, the email message includes email addresses of multiple contacts to whom the email message was directed. In that embodiment, the user input is a selection of one or more of the email addresses of the multiple contacts. Thus, for that embodiment, an IM session is initiated ( 1840 ) between the user and one or more of the multiple contacts. In an example embodiment, the method of FIG. 18 may be performed by the systems described with reference to FIGS. 1 through 5 and FIGS. 9 and 10.  
     [0130]FIGS. 19 and 20 are flowcharts showing another embodiment of a method for integrating email and IM services in which IM sessions with multiple contacts is established at a single IM window. As shown in FIG. 19, a first IM session is established ( 1920 ) between the user and a first contact at an IM window. Upon establishing ( 1920 ) the first IM session with the first contact in the IM window, a second IM session is established ( 1930 ) with a second contact in the same IM window. Once the first IM session with the first contact is established ( 1920 ), the user receives ( 1940 ) IM messages from the first contact. The received ( 1940 ) IM messages are displayed ( 1950 ) to the user at the IM window. Similarly, once the second IM session with the second contact is established ( 1930 ), the user receives ( 1960 ) IM messages from the second contact. The received ( 1960 ) messages are displayed ( 1970 ) to the user at the IM window.  
     [0131] When the user types an IM message to the first and second contacts, this IM message is received ( 2020 ) at the IM window. After receiving ( 2020 ) the IM message typed by the user, the IM message is conveyed ( 2030 ) to the first contact. Similarly, the IM message is also conveyed ( 2040 ) to the second contact. In an example embodiment, the method of FIGS. 19 and 20 may be performed by the systems described in FIGS. 1 through 5 and FIG. 15.  
     [0132]FIG. 21 is a flowchart showing another embodiment of a method for integrating email and IM services in which IM messages from two disparate IM services is bridged by the user&#39;s IM service. As shown in FIG. 21, an IM message is received ( 2120 ) from a first contact. The IM message received ( 2120 ) from the first contact is transmitted by the first contact using a first IM protocol. Upon receiving ( 2120 ) the IM message, the IM message is reformatted ( 2130 ) and forwarded ( 2140 ) to a second contact. The second contact receives the IM message using a second IM protocol. The reformatting ( 2130 ) and forwarding ( 2140 ) of the IM message may be seen, in the aggregate, as a conveying ( 2150 ) of the IM message to the second contact. In an example embodiment, the method of FIG. 21 may be performed by the systems described in FIGS. 1 through 5 and FIG. 15.  
     [0133]FIG. 22 is a flowchart showing, in greater detail, the reformatting ( 2130 ) of the IM message shown in FIG. 21. As shown in FIG. 22, the reformatting ( 2130 ) may be seen as comprising the removal ( 2220 ) of the user&#39;s IM address. Upon removing ( 2220 ) the user&#39;s IM address, the IM address of the first contact is determined ( 2230 ). Once the IM address of the first contact is determined ( 2230 ), the message content from the IM message is extracted ( 2240 ). The extracted ( 2240 ) message content is then concatenated ( 2250 ) with the determined IM address of the first contact. As shown in the embodiment of FIG. 22, by removing the user&#39;s IM address from the message, the IM message is forwarded to the recipient as if it were directly sent to the recipient, rather than being cascaded through the user&#39;s system.  
     [0134]FIG. 23 is a flowchart showing, in greater detail, the removing ( 2220 ) of the user IM address shown in FIG. 22. The removing ( 2220 ) of the user&#39;s IM address may be seen as a two-step process. Thus, as shown in FIG. 23, the removing ( 2220 ) of the user&#39;s IM address begins with determining ( 2320 ) a number of characters in-the user&#39;s IM address. Upon determining ( 2320 ) the number of characters in the user&#39;s IM address, the same number of delete characters is inserted ( 2330 ) adjacent to the user&#39;s IM address. Thus, in effect, the inserted delete characters removes the user&#39;s IM address from the message stream.  
     [0135]FIG. 24 is a flowchart showing one embodiment of a method for integrating email and IM services in which contact information is correlated to a contact identifier associated with a particular contact. As shown in FIG. 24, one embodiment of the method begins with receiving ( 2420 ) of contact information. Upon receiving ( 2420 ) the contact information, the received ( 2420 ) contact information is correlated ( 2430 ) to a contact identifier. As described with reference to FIGS. 12 through 13B, the contact information may comprise a fall name, one or more email addresses, one or more IM addresses, one or more phone numbers, one or more mailing addresses, and other detailed information related to the contact.  
     [0136]FIGS. 25 through 27 are flowcharts showing several embodiments of methods for integrating email and IM services in which email thread history and IM thread history are stored in a single thread history database. As shown in FIG. 25, one embodiment may be seen as comprising the generating ( 2520 ) of an email message from an IM session window. In addition to generating ( 2520 ) the email message from the IM session window, a globally unique identifier (GUID) associated with the generated email message is also generated ( 2530 ). Both the email message and the GUID are then stored ( 2540 ) in a message thread history database. Similarly, as shown in FIG. 26, when an email message is received ( 2620 ), a GUID associated with the received ( 2620 ) email message is generated ( 2630 ). The received ( 2620 ) email and the generated ( 2630 ) GUID are stored ( 2640 ) in the message thread history database. Also, when an IM session is initiated ( 2720 ) from an email read window, a session transcript is generated ( 2730 ). In addition to the session transcript, a GUID associated with the session transcript is also generated ( 2740 ). The IM session transcript and the GUID are stored ( 2750 ) in the thread history database. Thus, as shown in FIGS. 25 through 27, both IM and email thread histories may be stored in a single thread history database, thereby permitting a user to access any IM transcript or email message associated with a particular thread. In an example embodiment, the thread history database may be similar to the database shown in FIG. 16.  
     [0137]FIGS. 28A through 28E are data flow diagrams corresponding to FIGS. 2A through 2C. In this regard, FIGS. 28A through 28E show the data flow subsequent to installation of software components. As shown in FIG. 28A, the tray manager  102  receives ( 2902 ) a selection of an email user interface  210  by the user. Upon receiving the selection of the email user interface  210 , the tray manager  102  requests ( 2804 ) login names and passwords for all of the user&#39;s email and IM accounts from the login database  3050 . The login names and passwords for all of the user&#39;s email and IM accounts is received ( 2806 ) by the tray manager  102  in response to the request ( 2804 ). The email login names and passwords are then conveyed ( 2808 ) by the tray manager  102  to the email user agent  106 , which logs into ( 2810 ) each of the user&#39;s email accounts using the email login names and passwords. Upon logging into ( 2810 ) each of the user&#39;s email accounts, the email user agent  106  requests ( 2812 ) email messages from the email server  204 . In response to the request ( 2812 ), the email user agent  106  receives ( 2814 ) the email messages from the email server  204 . The process of retrieving email messages is described in greater detail with reference to FIGS. 30 and 31 and is, therefore, not discussed further here. Upon receiving ( 2814 ) the email messages, the email user agent  106  stores conveys the email messages to a mail store  206  for storing ( 2816 ).  
     [0138] In addition to retrieving email messages, a user interface is instantiated to display the retrieved email messages. This process is shown in FIG. 28B. As shown in FIG. 28B, the email user agent  104  generates a command to instantiate a user interface. The command is conveyed ( 2818 ) to the tray manager  102 , which instantiates ( 2820 ) the email user interface  210 . The email user interface  210  further instantiates ( 2822 ) a message center. Upon instantiating ( 2820 ) the email user interface  210  and the message center, the email user agent  106  issues a request ( 2824 ) to the mail store  206  for all of the stored email messages. The email messages are received ( 2826 ) by the email user agent  106  in response to the request. The email user agent  106  conveys ( 2828 ) the email messages to the tray manager  102 , which, in turn, conveys ( 2830 ) the email messages to the email user interface  210  for display.  
     [0139] As shown in FIG. 28C, in a substantially parallel process as the retrieval of the email messages, the tray manager  102  conveys ( 2832 ) the IM login names and passwords to the IM user agent  104 . The IM user agent  104  logs into ( 2834 ) each of the user&#39;s IM accounts using the received IM login names and passwords. Upon logging into ( 2834 ) each of the IM accounts, the IM user agent obtains ( 2836 ) the IM Internet presence information for each of the IM contacts as described in U.S. provisional patent application serial Nos. 60/411,336 and 60/419,613, and U.S. patent application Ser. Nos. 10/274,408, 10/274,478, and 10/274,405.  
     [0140] Thus, as shown in FIGS. 28A through 28C, if the user chooses to launch the email user interface  210 , then all of the user&#39;s email messages from all of the user&#39;s email accounts is displayed to the user by launching the tray manager  102 . Additionally, all of the user&#39;s contacts&#39; IM Internet presence information is retrieved by the launching of the tray manager  102 .  
     [0141]FIGS. 29A through 29E are data flow diagrams corresponding to FIGS. 3A through 3C. In this regard, FIGS. 29A through 29E show the data flow subsequent to installation of software components. As shown in FIG. 29A, the tray manager  102  receives ( 2902 ) the selection of the IM user interface. Upon receiving ( 2902 ) the selection, the tray manager  102  instantiates ( 2904 ) the IM user interface  308 . The IM user interface  308  queries ( 2906 ) the user for a login name and password. Thus, unlike the selection of the email user interface  210  in FIGS. 28A through 28C, the selection of the IM user interface  308 , in this embodiment, results in user input of a login name and password. The IM user interface  308  receives ( 2908 ) the login name and password entered by the user and conveys ( 29   10 ) the login name and password to the IM user agent  104 . The IM user agent  104  looks up ( 2912 ) the login database  3050  to determine whether or the login name and password are in the login database  3050 . If the login name and password are in the login database  3050 , then the IM user agent  104  receives ( 2914 ) a confirmation that the login name and password are valid. Upon receiving the confirmation, the IM user agent  104  issues a request ( 2916 ) to the login database  3050  for all IM login names and passwords. The IM login names and passwords are received ( 2918 ) in response to the request ( 2916 ).  
     [0142] As shown in FIG. 29B, upon receiving ( 2918 ) all of the IM login names and passwords, the IM user agent logs into ( 2920 ) each of the user&#39;s IM accounts through the IM server  304  using the IM login names and passwords. Since the login process is discussed in detail in U.S. provisional patent application serial Nos. 60/411,336 and 60/419,613, and U.S. patent application Ser. Nos. 10/274,408, 10/274,478, and 10/274,405, further discussion of the login process is omitted here. Upon logging into ( 2920 ) the IM accounts through the IM server  304 , the IM user agent  104  obtains ( 2922 ) the IM Internet presence information for each of the user&#39;s contacts from the IM server  304 . Upon obtaining ( 2922 ) the IM Internet presence information, the IM user agent  104  issues ( 2924 ) a command to the tray manager  102  to display the IM Internet presence information for all of the user&#39;s contacts. In response to the command, the tray manager  102  issues a request ( 2926 ) to the IM user interface  308  to instantiate a roster window. The IM user interface  308  instantiates ( 2928 ) the roster window in response to the issued request by the tray manager  102 . Upon instantiation ( 2928 ) of the roster window, the IM user agent  104  conveys ( 2930 ) the IM Internet presence information to the tray manager  102 , which, in turn, conveys ( 2932 ) the IM Internet presence information to the roster window through the IM user interface  308 . The IM Internet presence information is subsequently displayed to the user at the roster window.  
     [0143] As shown in FIG. 29C, in a substantially parallel process as the retrieval of the IM Internet presence information, the IM user agent  104  conveys ( 2934 ) the login name and password to the tray manager  102 , which, in turn, conveys ( 2936 ) the login name and password to the email user agent  106 . The email user agent  106  issues ( 2942 ) a request to the login database  3050  for all of the email login names and passwords for all of the user&#39;s email accounts. In response to the request ( 2942 ), the email user agent  106  receives ( 2944 ) the email login names and passwords from the login database  3050 .  
     [0144] Continuing with FIG. 29D, the email user agent  106  logs into ( 2946 ) each of the user&#39;s email accounts using the email login names and passwords. The process of logging into each of the user&#39;s email accounts is shown in greater detail with reference to FIGS. 30 and 31. Upon logging into ( 2946 ) each of the email accounts, the email user agent  106  issues a request ( 2948 ) for all of the email messages at the various email accounts. The email messages are received ( 2950 ) by the email user agent  106  in response to the request ( 2948 ). Upon receiving ( 2950 ) the email messages, the email user agent  106  conveys the email messages to the mail store  206 , which stores ( 2952 ) the email messages.  
     [0145] Thus, as shown in FIGS. 29A through 29D, if the user chooses to launch the IM user interface  308 , all of the user&#39;s contacts&#39; IM Internet presence information is retrieved and displayed to the user by inputting a single user name and password. Additionally, all of the user&#39;s email messages from all of the user&#39;s email accounts is retrieved by the inputting of the single user name and password.  
     [0146]FIGS. 30 and 31 show an example email login process in which a specific user may log into several email accounts to retrieve email messages. In this regard, FIGS.  30  and  31  show email components that correspond to the IM components shown in U.S. provisional patent application serial Nos. 60/411,336 and 60/419,613, and U.S. patent application Ser. Nos. 10/274,408, 10/274,478, and 10/274,405. While the embodiments of FIGS. 30 and 31 refer to specific Internet service providers (e.g., Yahoo, Microsoft Network (MSN), America On-Line (AOL), BellSouth, etc.), it should be understood that these specific references are provided for purposes of clarity, and are not intended to limit the invention to the specifically provided examples. Since similar transport mechanisms are described in U.S. provisional patent application serial Nos. 60/411,336 and 60/419,613, and U.S. patent application Ser. Nos. 10/274,408, 10/274,478, and 10/274,405, only a truncated discussion of email transport mechanisms is presented with reference to FIGS. 30 and 31.  
     [0147] As shown in an example embodiment in FIG. 30, after a setup process, a tray manager  102  accesses a login database  3050  to retrieve login names and passwords for each email account belonging to a user. The example of FIG. 30 shows the user as having post office protocol version  3  (POP 3 ) email accounts on AOL, Yahoo, MSN, and BellSouth. Since POP 3  is known in the art, further discussion of POP 3  is omitted here. Upon retrieving the login names and passwords, the tray manager  102  generates a request to the email user agent  106 , which includes information for instantiating one or more transport protocol objects (TPOs). Each of the TPOs is configured to provide an interface to each of the user&#39;s POP 3  email accounts. Thus, in response to the request, the email user agent  106  instantiates POP 3  TPOs  3030 ,  3032 ,  3034 ,  3036  for the user&#39;s AOL email account, Yahoo email account, MSN email account, and BellSouth email account. Other embodiments may include transport mechanisms launched or activated in other manners.  
     [0148]FIG. 31 is a block diagram showing one embodiment in which instantiated POP 3  TPOs  3030 ,  3032 ,  3034 ,  3036  log into their respective email servers  3110 ,  3112 ,  3114 ,  3126  to retrieve email messages from the various email servers  3110 ,  3112 ,  3114 ,  3126 . Upon being instantiated, each of the POP 3  TPOs  3030 ,  3032 ,  3034 ,  3036  receives the login names and passwords for their respective email server  3110 ,  3112 ,  3114 ,  3126 , thereby permitting the POP 3  TPOs  3030 ,  3032 ,  3034 ,  3036  to log into the user&#39;s email accounts at their respective servers  3110 ,  3112 ,  3114 ,  3126 . Upon logging into each of the email accounts at the various email servers  3110 ,  3112 ,  3114 ,  3126 , each of the POP 3  TPOs  3030 ,  3032 ,  3034 ,  3036  retrieves email messages from its respective server  3110 ,  3112 ,  3114 ,  3126 . In this regard, for example, the AOL POP 3  TPO  3030  retrieves email messages from the AOL server  3110 ; the Yahoo POP 3  TPO  3032  retrieves email messages from the Yahoo server  3112 , etc. The retrieved email messages are conveyed to the tray manager  102 , which, in turn, conveys the email messages to the email user agent  106 . Since the email messages are directed through different POP 3  TPOs  3030 ,  3032 ,  3034 ,  3036 , each email message may be sorted by the email user agent  106  according to its originating email account (e.g., AOL email account, Yahoo email account, MSN email account, BellSouth email account, etc.). Consequently, when the user chooses to reply to a received email message, the email user agent  106 , in one embodiment, may direct the reply email message through the same POP 3  TPO through which the email message was received. In other words, the reply to an email message uses the same email account from which the email message was received. Thus, for example, if the email user agent  106  receives an email message through the user&#39;s AOL email account, then the reply to that email message, in one embodiment, would be directed to the recipient through the user&#39;s AOL account. Similarly, if an email message is received through the user&#39;s BellSouth email account, then the reply to that email message would be directed to the recipient through the users BellSouth email account.  
     [0149] The address book object  108 , the email user agent  106 , the IM user agent  104 , the tray manager  102 , and other objects instantiated by these components may be implemented in hardware, software, firmware, or a combination thereof. In the preferred embodiment(s), the address book object  108 , the email user agent  106 , the IM user agent  104 , the tray manager  102 , and other objects instantiated by these components is implemented in software or firmware that is stored in a memory and that is executed by a suitable instruction execution system. If implemented in hardware, as in an alternative embodiment, the address book object  108 , the email user agent  106 , the IM user agent  104 , the tray manager  102 , and other objects instantiated by these components can be implemented with any or a combination of the following technologies, which are all well known in the art: a discrete logic circuit(s) having logic gates for implementing logic functions upon data signals, an application specific integrated circuit (ASIC) having appropriate combinational logic gates, a programmable gate array(s) (PGA), a field programmable gate array (FPGA), etc.  
     [0150] Any process descriptions or blocks in flow charts should be understood as representing modules, segments, or portions of code which include one or more executable instructions for implementing specific logical functions or steps in the process, and alternate implementations are included within the scope of the preferred embodiment of the present invention in which functions may be executed out of order from that shown or discussed, including substantially concurrently or in reverse order, depending on the functionality involved, as would be understood by those reasonably skilled in the art of the present invention.  
     [0151] The address book object  108 , the email user agent  106 , the IM user agent  104 , the tray manager  102 , and other objects instantiated by these components may be implemented as a computer program, which comprises an ordered listing of executable instructions for implementing logical functions. As such the address book object  108 , the email user agent  106 , the IM user agent  104 , the tray manager  102 , the address book database  110 , and other objects instantiated by these components can be embodied in any computer-readable medium for use by or in connection with an instruction execution system, apparatus, or device, such as a computer-based system, processor-containing system, or other system that can fetch the instructions from the instruction execution system, apparatus, or device and execute the instructions. In the context of this document, a “computer-readable medium” can be any means that can contain, store, communicate, propagate, or transport the program for use by or in connection with the instruction execution system, apparatus, or device. The computer-readable medium can be, for example but not limited to, an electronic, magnetic, optical, electromagnetic, infrared, or semiconductor system, apparatus, device, or propagation medium. More specific examples (a nonexhaustive list) of the computer-readable medium would include the following: an electrical connection (electronic) having one or more wires, a portable computer diskette (magnetic), a random access memory (RAM) (electronic), a read-only memory (ROM) (electronic), an erasable programmable read-only memory (EPROM or Flash memory) (electronic), an optical fiber (optical), and a portable compact disc read-only memory (CDROM) (optical). Note that the computer-readable medium could even be paper or another suitable medium upon which the program is printed, as the program can be electronically captured via, for instance, optical scanning of the paper or other medium, then compiled, interpreted or otherwise processed in a suitable manner if necessary, and then stored in a computer memory.  
     [0152] Although exemplary embodiments have been shown and described, it will be clear to those of ordinary skill in the art that a number of changes, modifications, or alterations to the invention as described may be made. For example, while the disclosed embodiments show the various modules (e.g., address book object  108 , the email user agent  106 , the IM user agent  104 , the tray manager  102 , other objects instantiated by these components, etc.) as being in a distributed network, it will be clear to one of ordinary skill in the art that the various modules may be located on a server or a client without adverse effect to the functioning of the various components. All such changes, modifications, and alterations should therefore be seen as within the scope of the disclosure.