1. Field of the Invention
This invention relates generally to email applications and more specifically to a system and method for enabling offline use of a client email application executing within a browser.
2. Description of the Background Art
Accessing one's email account through a browser interface is known in the art. In such cases, a user uses a browser to go to a website associated with the user's email account. For instance, in Yahoo Mail, a user accesses his email by logging into Yahoo's website.
In known systems, email accounts accessed through a browser are available only when the user's computer is online. There is no ability to access such systems through a browser interface when the user's computer is offline.
It is desirable for one to be able to review, search, and compose email messages when the one's computer is offline, such as when one is on an airplane. Currently, the only way to do this is to use a separate email client application (other than the browser interface) to view one's email. Microsoft Outlook and Outlook Express are examples of such an application. One disadvantage of this is that a user has a separate email interface for when the user is offline and online. Consequently, when a user is offline, it is desirable to enable the user to review and search email messages received prior to the user going offline and to compose messages that will be saved and automatically sent when the user is back online, where such functionality is provided through the same browser interface that the user uses when he is online.
The present invention provides a system and method for providing online and offline email functionality (and/or other collaboration suite functionality). A local web server application running on the user's computer serves an email client on the user's computer, where the email client executes within a browser. The browser sends requests to the local web server application for user mailbox information, and the local web server application responds to such requests. Because the local web server application executes on the user's computer, it is able to serve the email client regardless of whether the user's computer is online or offline.
The local web server application also communicates with a remote web server, where the remote web server has the capability to receive incoming messages from a Mail Transfer Agent and to send outbound message to a Mail Transfer Agent. When the user's computer is online, the remote web server and local web server application periodically (although not necessarily at regular intervals) synchronize their user mailbox information. The local web server application and remote web server application store, search, and index user mailbox information in the same manner.
a-5b illustrate a method for synchronizing user mailbox information stored by the local web server application and the remote web server.
a is a block diagram of an example remote web server application that provides email/collaboration functionality.
b is a block diagram of an example local web server application that provides email/collaboration functionality.
The local web server application 130 serves an email client application 110 that runs within browser 120 on the user's computer 170 (i.e., with email client code 110, the browser 120 becomes the email client). The local web server application 130 responds to requests from the browser 120 to retrieve or process user mailbox information.
The remote web server 160 communicates with a Mail Transfer Agent (MTA) 180 to receive inbound email messages for the user and to send the user's outbound message. The local web server application 160 and remote web server 160 include synchronization modules 150, 140, respectively, that synchronizes the user mailbox information stored by each.
During synchronization, the remote web server 160 provides the local web server application 130 with changes to user mailbox information made on the remote web server 160. Examples of changes to user mailbox information that may occur on the remote web server include the receipt of new, incoming email messages in the user's mailbox, or appointments made in the user's calendar by authorized third parties. Also during synchronization, the local web server application 130 provides the remote web server 160 with changes to user mailbox information made on the user computer 170. Examples of changes to user mailbox information that may occur on the user computer 170 include a user composing and sending a message, or a user adding a person to his contacts.
As indicated above, the email system 100 can provide more than just email functionality. It can provide other collaboration application functionality, such as calendaring functionality and a contacts directory. The methods described herein with respect to storing, processing, retrieving, and synchronizing email data can also apply to other user mailbox content, such as calendar appointments and contact files.
Because the local web server application 130 responds to the email client 110 in the browser 120, the user can access, view, and search his mailbox information through the browser 120 even when he is offline. The messages he will be able to view, search, and otherwise manipulate are those that were received the last time the user was online. Messages composed when the user is offline are automatically sent to the designated addresses (via the remote web server 160) when the user is back online. The user will be able to retrieve and search messages faster by the fact that the local web server application 130 responds to requests from the browser 120 as opposed to the remote web server 160.
a-b illustrate an example of the way in which the synchronization modules 140, 150 synchronize user mailbox information on the user's computer 170 and the remote web server 160. The method described with respect to
If this is the first time the local web server application and remote web server are performing synchronization, the synchronization module 150 on the remote web server 160 sends the local web server application 130 all of the applicable user's mailbox information, as well as a “sync token” (step 520). In one embodiment, a sync token is a unique string. In a further embodiment, the sync token is a unique, numeric string associated with the last piece of data to be sent to the local web server application 130. For each content or metadata change to the user's mailbox received at the remote web server 160 after such last piece of data, the remote web server 160 increments the numeric string by one and associates such new numeric string with such content or metadata change (where each content or metadata changes is associated with a string that is one greater than the string associated with the previous content or metadata change).
If this is not the first time the local web server application 130 and remote web server 160 are performing a synchronization, the data sync request by the synchronization module 140 on the user's computer 170 includes the last sync token provided to the local web server application 130 by the remote web server 160 (step 530). The synchronization module 150 on the remote web sever 160 then provides the local web server application 130 with the metadata changes and content changes that have occurred since the last synchronization, where the remote web server 160 uses the sync token to identify such changes (step 540). The sync response also includes a new sync token (step 540).
The local web server application 130 then determines if there are any conflicts between the data provided by the remote web server 160 and changes made the user on the user's computer 170 since the last synchronization (step 550). The local web server application 130 may ask the user to resolve conflicts or it may follow rules for resolving the conflict itself (step 560).
After any conflicts have been resolved, the synchronization module 140 on the local web server application 130 sends the remote web server 160 mailbox changes made by the user on the user's computer 170 (and stored by the local web server application 130) since the last data synchronization (step 570). Synchronization module 140 also sends the remote web server 160 a sync request with the latest sync token (step 580). In response to receiving such sync token, the remote web server 160 provides the local web server application 130 with changes made to the user's mailbox on the remote web server since such sync token was created (step 585). The remote web server 160 also provides the local web server application 130 with a new sync token (if changes have occurred since step 540). The local web server application 130 then determines if a conflict exists (step 590). If one exists, the conflict is resolved through either rules or user intervention, as applicable (595), and steps 570-590 are repeated. Otherwise, the data synchronization ends (step 598).
a illustrates an example of email server software running on the remote server 160. The software on the remote web server 160 can be thought of as divided into various functional modules. These modules include a Mailbox Interface 1670, a Query Parser 1630, an Indexer 1635, a Database Management Module 1640, a Message Store Interface 1645, a MTA Interface 1620, an Email Client Interface 1615, and a Synchronization Module 1680. In one embodiment these modules are coded in Java. Those skilled in the art will appreciate that an email application will include additional, well-known functionality not represented by the above modules (such as functionality related to security, user log in, global address lists, etc.). Moreover,
The Database Management Module 1640 is a set of routines for managing, storing and retrieving information in a relational Database 1655 (e.g., MySQL). The Database 1655 includes information about each provisioned email user's mailbox that is used to generate a view of the user's mailbox. It stores a listing of the contents of a user's mailbox (with a reference to the actual storage location of the messages in the Message Store 1660), and it includes mutable information about such content, such as which folder each message resides (inbox, sent items, user-created folders, etc.) or which messages have been read.
The Message Store Interface 1645 is software for storing and retrieving email messages in a Message Store 1660. The Message Store (often referred to as the “BLOB Store” in the industry) stores the actual email messages, including any attachments embedded within email messages. If the remote web server 160 provides collaboration functionality, then the message store also stores content related to other mailbox items, such as calendar appointments and contacts. Techniques for storing and retrieving email messages, as well as storing and retrieving user-specific mailbox information to generate a view of a user's mailbox, are well known in the art.
The Indexer 1635 indexes email messages based on the content of the messages and on the metadata in the headers of the email messages. The Indexer 1635 also may index email attachments based on content and metadata. If the remote web server 160 provides collaboration application functionality other than just email, than the Indexer 1635 may also index other mailbox items, such as calendar appointments and contact files. The Indexer 1635 stores the indexes in Index 1650. In an alternate embodiment, the functionality of the Indexer 335 and the Database Management Module 1640 are combined, and the indexes and user mailbox information are stored in one database.
The Email Client Interface 1615 is the interface through which remote web server communicates with browsers when there is no local web server application 130 on the user computers (in such scenario, the methods described with respect to
The MTA Interface 1620 receives incoming messages for provisioned users (i.e., users who have mailboxes with the email application on the remote web server 160) from a Mail Transfer Agent (MTA) (not shown). In one embodiment the MTA Interface 1620 uses the Local Mail Transfer Protocol (LMTP) to communicate with an MTA that uses the Simple Mail Transfer Protocol (SMTP). The MTA forwards incoming email message to the Mailbox Interface 1670.
The Mailbox Interface 1670 processes incoming email messages, including parsing email message headers for metadata. The Mailbox Interface 1670 sends the metadata to the Indexer 1635 and Database Management Module 1640, as applicable. The Mailbox Interface 1670 includes a Synchronization Module 1680 which performs the synchronization described with respect to
The Mailbox Interface 1670 also includes a Query Parser 1630, which parses all requests that involve searching the Index 1650 or the Database 1655. In response to receiving such requests, the Query Parser 1630 creates appropriate query trees and sends them to either the Indexer 1635 or the Database Management Module 1640, depending on whether or not the Index 1650 or the Database 1655 has the appropriate information. The Query Parser 1630 receives, and if necessary, assembles the responses to the query trees from the Indexer 1635 and Database Management Module 1640 and forwards it to the appropriate interface for transmittal to the requesting systems.
b illustrates an example of the local web server application 130. Like the software on the remote server, the local web server application includes a Mailbox Interface 1370, a Query Parser 1330, an Indexer 1335, a Database Management Module 1340, a Message Store Interface 1345, and a Synchronization Module 1380. These modules process user mailbox information the same as the corresponding modules on the remote web server 160. Thus, the user experience with his mailbox is the same regardless of whether the email client communicates with the local web server application 130 or the remote web server 160. The local web server application 130 uses the file system on the hard drive of the user's computer 170 to store the index and the messages associated with the user's mailbox. Consequently, the Indexer 1335 and Message Store Interface 1345 respectively store the index and mailbox content in the file system of the user's computer 170. The Database Management Module 1340 uses an embedded database on the user's computer 170 to store the same type of user mailbox information that the Database Management Module 1640 on the remote web server 160 stores in the Database 1655.
Like the remote web server 160, local web server application 130 also includes an Email Client Interface 1315. Email Client Interface 1315 processes inbound and outbound communications with the email client application 110 in the web browser 120. In one embodiment, the Email Client Interface 1315 communicates with the email client application 110 via SOAP. Also, in one embodiment, the first web page provided to the browser 120 by the Email Client Interface includes JavaScript code. The JavaScript code is downloaded into a user's browser to become the email client application 110.
As will be understood by those familiar with the art, the invention may be embodied in other specific forms without departing from the spirit or essential characteristics thereof. Accordingly, the disclosure of the present invention is intended to be illustrative and not limiting of the invention.
This application claims the benefit of U.S. Provisional Application No. 60/606,862, filed on Sep. 2, 2004, and titled “Email System and Methods for Viewing, Searching, Tracking, and Indexing Email,” the contents of which are incorporated by reference as if fully disclosed herein.
Number | Date | Country | |
---|---|---|---|
60606862 | Sep 2004 | US |