`US 6,725,228 Bl
`(10) Patent No.:
`(12)
`Apr. 20, 2004
`(45) Date of Patent:
`Clarket al.
`
`US006725228B1
`
`(54)
`
`(76)
`
`SYSTEM FOR MANAGINGAND
`ORGANIZING STORED ELECTRONIC
`MESSAGES
`
`Inventors: David Morley Clark, 920 Innes Street,
`Nelson, British Columbia VLL 5T2
`(CA); Thomas Wilson Gibson, 230
`High Street, Nelson, British Columbia
`VIL 3Z9 (CA); David Mitchell
`Bracewell, 708 Third Street, Nelson,
`British Columbia VIL 2R2 (CA); Jeff
`Toy Tsao Kwan, 12 Arundel Avenue,
`Toronto, Ontario M4K 3A4 (CA)
`
`(*)
`
`Notice:
`
`Subject to any disclaimer, the term of this
`patent
`is extended or adjusted under 35
`U.S.C. 154(b) by 212 days.
`
`(21)
`
`(22)
`
`(51)
`(52)
`(58)
`
`(56)
`
`Appl. No.: 09/704,199
`
`Filed:
`
`Oct. 31, 2000
`
`Tint. C1.) coccececccceeseeeessereereteteeeeserereeee GOGF 7/00
`US Chr icine TOTWOT
`Field of Search ...............0.....0... 707/7, 200, 2,
`707/102
`
`References Cited
`
`U.S. PATENT DOCUMENTS
`
`9/1986 Linderman.................. 712/300
`4,611,280 A *
`
`2/1989 McCauley ....
` w. 707/7
`4,809,158 A *
`.......... 7OT/7
`5,274,805 A * 12/1993 Ferguson et al.
`5,377,354 A
`12/1994 Scannell et al.
`5,440,734 A *
`8/1995 Wagar... FOF/T
`5,544,360 A
`8/1996 Lewak et al.
`5,548,789 A
`8/1996 Nakanura
`............. 707/102
`5,615,367 A *
`3/1997 Bennett et al.
`............. 709/207
`5,694,616 A * 12/1997 Johnson et al.
`5,813,009 A *
`9/1998 Johnsonet al. .............. 707/100
`5,899,995 A
`5/1999 Millier et al.
`5,948,058 A *
`9/1999 Kudoh et al.
`6,009,442 A
`12/1999 Chen et al.
`6,029,164 A
`2/2000 Birrell et al.
`6,057,841 A
`5/2000 Thurlow et al.
`6,073,131 A *
`6/2000 Roberti oo... cceeseeseenes TOUT
`6,073,142 A *
`6/2000 Geiger et al.
`..
`707/500
`6,088,696 A *
`7/2000 Moon et al.
`...
`707/10
`6,154,740 A * 11/2000 Shalt oo...ccc TOTT
`
`............ 707/L04.1
`
`.....ccccccecceceee 707/10
`6,167,402 A ™ 12/2000 Yeager
`6,182,071 Bl
`*
`1/2001
`Fushimi ...
`wane TOUT
`6,226,630 Bl
`*
`5/2001 Billmers ......
`vee TOT/3
`6,324,569 Bl
`* 11/2001 Ogilvie et al.
`« 707/500
`
`«. 709/206
`6,396,513 Bl
`*
`5/2002 Helfman etal.
`7/2002 Shuman .....u uu... 709/206
`6,424,995 Bl
`*
`9/2002 Liuetal. .............0. 7O7/LO
`6,449,615 Bl
`*
`« FOT/LO2
`6,466,941 Bl
`* 10/2002 Roweet al.
`.
`
`1/2003 Consens ................... 707/100
`6,507,846 Bl
`*
`
`
`
`..
`
`FOREIGN PATENT DOCUMENTS
`
`EP
`
`WO99/04344
`
`1/1999
`
`OTHER PUBLICATIONS
`
`Microsoft Internet Explorer 1995—2001.*
`Dvorak, John C., Scarier Than Spam, Jan. 4, 1999, pp. 1-2.
`De La Cruz et al., Inside MAPI, ©1996, pp. 528-541 (Table
`of Contents also included).
`MSDN Library—Apr. 1999, Messaging API (MAPI), Legal
`Information, Developing a Message Store Provider.
`
`* cited by examiner
`
`Primary Examiner—Kim Vu
`Assistant Examiner—Monplaisir Hamilton
`(74) Altorney, Agent, or Firm—Oyen, Wiggs, Green &
`Mutala
`
`(57)
`
`ABSTRACT
`
`A computer-based system catalogs andretrieves electronic
`messages saved in a message store. The system automati-
`cally organizes each saved message into multiple folders
`based on the contents and attributes of the message, and
`implements improved methods for manually organizing
`messages. Unlike prior art systems, where a message exists
`in only one folder,
`the system uses lightweight message
`shortcuts to display the message in multiple folders simul-
`tancously. The system preferably permits messages to be
`organized by: 1) basic message and attachment properties,
`e.g. date, status, attachment
`type; 2) extended message
`properties that the user can specify, e.g. keywords; and 3)
`correspondent or bulk mail sender/recipient, with automatic
`separation of bulk mail from correspondence. Performance
`and usability are improved by performing reads incremen-
`tally and by providing multiple sorting keys.
`
`34 Claims, 33 Drawing Sheets
`
`
`
`
`
`
`
`
`(14)
`Active Mall
`ToDo (4)
`Unread (18)
`‘Tocay (12)
`‘Powendary(5)
`Tht Week
`Elizabeth Green (2)
`Bob Baxter (1)
`Forrester Research
`POA <taved search>
`-
`UL <heyweard
`M45 Study “eeywor|—
`|
`~ps‘Smt Goresnondertfukmal]Keyword oeImameSearch| Use
`1%
`{
`=
`:)
`=- 6
`eat
`
`[
`
`
`1A -
`
`001
`
`Apple Inc.
`APL1008
`U.S. Patent No. 8,724,622
`
`Apple Inc.
`APL1008
`U.S. Patent No. 8,724,622
`
`001
`
`
`
`U.S. Patent
`
`Apr. 20, 2004
`
`Sheet 1 of 33
`
`US 6,725,228 BI
`
`
`
`FIG. 1A
`
`002
`
`002
`
`
`
`Apr. 20, 2004
`
`Sheet 2 of 33
`
`US 6,725,228 B1
`
`U.S. Patent
`
`FIG. 1B
`
`003
`
`003
`
`
`
`U.S. Patent
`
`Apr. 20, 2004
`
`Sheet 3 of 33
`
`US 6,725,228 BI
`
`User Interface Device
`
`Message Client
`
`29
`
`MessageStore
`Server(s)
`
`Incoming Events
`
`Outgoing Requests
`
`FIG. 2
`
`004
`
`004
`
`
`
`U.S. Patent
`
`Apr.20, 2004
`
`Sheet 4 of 33
`
`S 6,725,228 B1
`
`-7 U
`
`Date
`|--- Today
`|--- This Week
`|--- This Month
`
`Status
`|--- Received
`
`Correspondent
`|--- Tom Gibson
`
`Attachment
`|--- All Attachments
`|--- DOC
`
`Status
`|--- Unread
`|--- Active Mail
`
`Keywords
`|--- Marketing
`|--- White Paper
`
`Transport Header
`
`ReceiveDate: Today 10:10:05
`Direction: Received
`
`From: Tom Gibson
`To: David Clark
`Cc: David Bracewell
`
`Subject: White paper
`Body:
`Here is the white paper
`for your review.
`
`Attachment: White Paper.doc
`
`atus & Organizationa
`Information
`
`Status: IsUnread
`IsActive
`
`Keywords: Marketing
`White Paper
`
`FIG. 3
`
`005
`
`005
`
`
`
`U.S. Patent
`
`Apr. 20, 2004
`
`Sheet 5 of 33
`
`US 6,725,228 B1
`
`Message
`Client
`
`CLIENT COMPUTER
`
`
`
`
`
`
` aa———
`
`CLIENT COMPUTER
`
`SERVER COMPUTER
`
`40B
`
`FIG. 4B
`
`
`
`User
`Interface
`Device
`
`—_
`Catalog
`database
`
`Message
`Store(s)
`
`CLIENT COMPUTER
`
`SERVER COMPUTER
`
`40c
`
`FIG. 4C
`
`006
`
`006
`
`
`
`U.S. Patent
`
`Apr. 20, 2004
`
`Sheet 6 of 33
`
`US 6,725,228 B1
`
`SOREL
`
`<J StoreLinkId (FK
`S StoreMessageld (FK
`
`<ettachmentdata>
`
`Message [ *
`StoreMessageld
`
`Attachment
`<{ StoreAttachId
`
`[>>
`
`FIG. 5A
`
`007
`
`007
`
`
`
`U.S. Patent
`
`Apr.20, 2004
`
`Sheet 7 of 33
`
`US 6,725,228 B1
`
`Catalog / Message Store
`
`
`
`
`
`FIG. 5B
`
`008
`
`
`Shortcut
`
`
`Messageld
`_ AttachId
`
`
`“J Folderld
`
`
`
`MessageSummary Messageld
`
`
`
`
`
`
`
`
`
`
`57
`
`VY
`
`WV
`
`
`
`AttachId
`
`55
`
`Attachment
`Messageld
`AttachId
`
`<attachment data>
`
`Q
`
`Message
`Messageld
`
`008
`
`
`
`U.S. Patent
`
`Apr. 20, 2004
`
`Sheet 8 of 33
`
`US 6,725,228 B1
`
`60
`
`68
`
`64
`
`65
`
`66
`
`
`
`fEnatOrarter_[———~\—~\ x
`
`
`
`
`
`61
`
`61A
`
`ce Date
`
`—
`
`(14)
`
`Active Mail
`To Do (4)
`Unread (18)
`Today (12)
`Yesterday (6)
`This Week
`
`Elizabeth Green (2)
`Bob Baxter(1)
`Forrester Research
`
`PDA <saved search>
`
`Ul <keyword>
`
`X45 Study <keyword>
`
`—
`—
`
`——
`
`OE at[Status[Correspondent]BukMail|Keyword[Date[Atachmend|Search|User
`figmecsorsoofC
`69
`028
`62A
`67
`
`eo
`
`FIG. 6
`
`009
`
`009
`
`
`
`U.S. Patent
`
`Apr. 20, 2004
`
`Sheet 9 of 33
`
`US 6,725,228 B1
`
`THIRD LAYER- Correspondence and Bulk Mail Organization
`
`
`Separate Correspondence from Bulk Mail
`Automatic organization of Correspondence
`Bulk Mail organization by sender or recipient
`Manage Correspondent and Bulk Mail folders
`
`
`SECOND LAYER- Applications of Lightweight Message Shortcuts
`
`Automatic organization by Status
`Automatic organization by Date
`Automatic organization by Attachment
`Automatic organization by user assigned Keyword
`Improved manualorganization in user created folders
`Improved filtering mechanisms
`Improved handling of search results
`
`se©©®©@#©
`
`BASE LAYER- Base Services
`
`Catalog database
`Unified view of multiple Message Stores
`Catalog Server Requests and Events
`Lightweight message shortcuts
`Timed Shortcuts
`User created Shortcuts
`User excluded Shortcuts
`Incremental read of Folder contents
`
`FIG. 7
`
`010
`
`010
`
`
`
`U.S. Patent
`
`Apr. 20, 2004
`
`Sheet 10 of 33
`
`US 6,725,228 BI
`
`AlternateKey1
`
`
`
`olderType
`
`56
`
`
`
`57
`
`
`
`
`Folder
`
`iacaueis
`Folderld
`
`AttachId
`ParentFolderld
`arolderld
`= ParentFolderid eee
`Folderid
`
`
`
`
`
`+ SortKey
`IsHot
`4 Se
`AlternateKey2
`
`= ParentFolderid|FolderDateTime ) SortDirection AlternateKey2
`
`:
`:
`+ FolderName
`FolderSortColumn
`— DateTi
`
`
`
`TriggerAction
`(uppercase)
`FolderSortDirection
`= TGESte Me
`
`
`
`TriggerDateTime
`PPE
`ShorbcutCount
`
`
`
`AlternateKey3_|UnreadCount toe
`
`I
`= IsHot
`CorrespShortcutCount
`
`UnreadCorrespCount
`sUserShortcut
`
`
`
`MessageSummary
`Messageld
`AttachSummary
`FolderExcludeList
`IsUnread
`IsCorresp
`MessageDateTime
`DisplayNames
`
`Subject
`
`AttachType
`AttachName
`AttachSize
`
`FIG. 8
`
`011
`
`011
`
`
`
`U.S. Patent
`
`Apr.20, 2004
`
`Sheet 11 of 33
`
`US 6,725,228 B1
`
`4
`
`2°
`
`7
`
`Message Store Server
`
`Catalog Server
`
`MessageClient
`
`ReadFolderContents———
`
`ChangeFolderSortkey———e
`
`AddShortcut-—————
`
`DeleteShortcut-——e
`
`DeleteFolderShortcuts———e
`
`ReadMessageSummary——e
`
`
`
`
`
`
`
`
`
`ReadAttachSummary——e
`
`OutgoingEvents
`
`
`OutgoingRequests
`
`FolderAdded-——_—_>
`<?—_ReadMessage
`
`FolderChanged-————>
`
`FolderHotChanged-——}>
`
`ShortcutSortKeyChanged—>
`
`
`
`SummaryChanged——?
`
`FIG. 9
`
`012
`
`012
`
`
`
`U.S. Patent
`
`Apr. 20, 2004
`
`Sheet 12 of 33
`
`US 6,725,228 BI
`
`Memory structures
`
`ShortcutEntry
`
`
`100 =
`ShortcutAction
`ShortcutArray
`Excluded
` OldShortcut
`
`
`
`[ AttachSummary ]
`
`FIG. 10A
`
`Process each ShortcutEntry as shownin FIG. 11A.
`
`Input Parameters
`= MessageSummary
`
`Readall Shortcuts for Message. Save each Shortcut as an OldShortcut
`object in ShortcutArray with ShortcutAction of saDelete.
`
`Execute Second Layer 2 Automatic Organization Rules
`(which use "AddChangeShortcut" to create Shortcuts)
`
`Execute Second LayerFilter Rules
`(which use "AddChangeShortcut" to create Shortcuts)
`
`Execute Third Layer Correspondent and Bulk Mail Rules
`(which use "AddChangeShortcut" to create Shortcuts)
`
`For each element in FolderExcludeList, do “ValidateFolderListElement".
`If valid element, set Excluded flag in matching ShortcutEntry to True.
`
`FIG. 10B
`
`013
`
`013
`
`
`
`U.S. Patent
`
`Apr. 20, 2004
`
`Sheet 13 of 33
`
`US6,725,228 B1
`
`AddChangeShortcut
`
`Input Parameters
`= Messageld
`+ AttachId
`+ FolderId
`+ TriggerAction
`+ TriggerDateTime
`+ IsUserShortcut
`
`Add ShortcutEntry to
`ShortcutArray. Set
`
`Search ShortcutArray for
`matching Shortcut or
`OldShortcut (using
`Messageld + AttachId +
`FolderId as search key)
`
`ShortcutAction to saAdd.
`FolderExcludeList
`
`ValidateFolderListElemen
`
`FIG. 10C
`
`Read Folder from Catalog
`database
`
`If FolderDateTime in element
`doesn't match value in
`Folder, delete element from
`
`FIG. 10D
`
`014
`
`014
`
`
`
`Set ShortcutTimer as shownin FIG. 13
`
`Yes
`
`sakeep
`
`No
`
`:
`
`U.S. Patent
`
`Apr.20, 2004
`
`Sheet 14 of 33
`
`US 6,725,228 B1
`
`Input Parameters
`= ShortcutEntry
`111
`
`Read Folder from Catalog
`database
`
`saDelete
`
`IsUser
`Shortcut?
`
`No
`
`on
`
`DeleteShortcut
`
`With OldShortcut, do
`"DecrementFolderCounts"
`(FIG. 11B)
`Delete Shortcut from
`Catalog database
`Generate ShortcutDeleted
`Event
`Do "UpdateFolder" (FIG.
`118)
`
`UpdateShortcut
`
`Do "BuildShortcut" (FIG. 11B)
`If Shortcut is same as OldShortcut, then
`Exit
`With OldShortcut, do
`“DecrementFolderCounts" (FIG. 11B)
`With Shortcut, do "IncrementFolderCounts"
`(FIG. 11B)
`Update Shortcut in Catalog database
`If the SortKey has changed, generate a
`ShortcutSortKeyChanged Event
`Do "UpdateFolder" (FIG. 11B)
`
`115
`
`FIG. 11A
`
`015
`
`B Ath (Tl ii
`
`on
`11B)
`With Shortcut, do
`"IncrementFolderCounts"
`(FIG. 11B)
`Add Shortcut to Catalog
`database
`Generate ShortcutAdded
`Event
`Do "UpdateFolder" (FIG.
`
`015
`
`
`
`U.S. Patent
`
`Apr. 20, 2004
`
`Sheet 15 of 33
`
`US6,725,228 BI
`
`BuildShortcut
`Finish building the Shortcut object in ShortcutEntry:
`-- Build SortKey is shown in FIG. 12
`-~ Set SortKey and SortColumn (from Folder)
`
`-- Set IsUnread and IsCorresp (from MessageSummary)
`
`IncrementFolderCounts
`
`Increment ShortcutCount
`If Shortcut.IsUnread, increment UnreadCount
`If Shortcut.IsCorresp, increment CorrespShortcutCount
`
`If Shortcut.IsCorresp AND IsUnread, increment UnreadCorrespCount
`
`DecrementFolderCounts
`
`Decrement ShortcutCount
`If Shortcut.IsUnread, decrement UnreadCount
`If Shortcut.IsCorresp, decrement CorrespShortcutCount
`
`If Shortcut.IsCorresp AND IsUnread, decrement UnreadCorrespCount
`
`UpdateFolder
`¢ Update Folder in Catalog database
`¢ Generate FolderChanged Event
`
`FIG. 11B
`
`016
`
`016
`
`
`
`U.S. Patent
`
`Apr. 20, 2004
`
`Sheet 16 of 33
`
`US 6,725,228 BI
`
`SHORTCUT STRUCTURE
`
`FLAGS ENCODING
`
`Byte
`Offset Length Field
`
`0
`4
`6
`10
`16
`17
`18
`22
`23
`
`4
`2
`4
`6
`1
`1
`4
`1
`1
`
`Messageld
`AttachId
`FolderId
`SortKey
`SortColumn
`TriggerAction
`TriggerDateTime
`Flags
`IsCorresp
`
`Bit
`
`Length Field
`
`0
`1
`2
`
`1
`1
`1
`
`SortDirection
`IsUnread
`IsUserShortcut
`
`FIELD TYPE
`
`SORT KEY FORMAT
`
`Notes
`
`:
`;
`UnicodeString
`
`ucW1
`
`ucw2
`
`UCW3
`
`Unicode Character Weights of
`first 3 characters of string.
`
`zee cS|C6Ci C2 C3 C4 Values of first 6 characters of
`
`
`AnsiString
`string.
`
`
`
`
`
`
`
`
`
`DateTime
`
`YY
`
`MM
`
`DD
`
`hh
`
`mmj|
`
`ss
`
`YY = Year - 1950
`
`Enumeration OR
`
`
`Sadiean YY|MM] DD|bh|we year- 1950Value
`(sdDescending)
`
`
`
`
`
`Svea OR 255|255)Value 255] 255| yy~vear- 1950
`
`
`
`
`
`(edascending) -YY|-MM| -DD] -hh
`
`
`Integer32 OR
`Integer16
`
`siciianncne Bits tees=
`
`31-24}
`23-16]
`15-8)
`7-0
`
`
`Bits are numbered with 0 being
`the least significant and 31 the
`most significant.
`
`FIG. 12
`
`017
`
`017
`
`
`
`U.S. Patent
`
`Apr. 20, 2004
`
`Sheet 17 of 33
`
`US 6,725,228 B1
`
`Startup
`Processing
`
`Initialize ShortcutTimer
`to inactive state
`
`Readfirst Shortcut
`from Catalog database
`using AlternateKey2
`
`generate an internal DeleteShortcut Request.
`
`135
`
`If TriggerDateTime is non-zero and is
`— less than ShortcutTimer, reset
`
`ShortcutTimer to TriggerDateTime
`
`137
`Shortcut
`
`*
`+
`
`Read Shortcut from Catalog database
`If TriggerActionis taDeleteShortcut then
`
`FIG. 13
`
`018
`
`018
`
`
`
`U.S. Patent
`
`Apr. 20, 2004
`
`Sheet 18 of 33
`
`US 6,725,228 B1
`
`140
`
`E
`
`142
`
`Yes
`
`142A
`
`Sort
`Direction?
`
`5
`sdDescending
`
`
`
`AlternateKey1 using AlternateKey1
` + CorrespOnly
`
`.
`Request Parameters
`
`
`
`
`= Folderld sdAscending—143ANo 143 143B
`
`+ SortKey
`
`+ Sortbirection|“Soreartoset” Position atfirst Position atlast
`
`
`
`+ RequestCount|position on Shortcut Shortcut in Folder Shortcutin Folder
`
`using AlternateKey1
`|
`
`
`
`144
`
`
`
`Is (CorrespOnly = True)
`AND (IsCorresp = False) ?
`
`i0
`
`
`
`|
`
`
`Filter?
`
`Is (ContentCount >=
`RequestCount) AND
`
`(Current SortkKey NOT =
`Previous SortKey)?
`
`Read
`Enough?
`
`
`149
`
`
`
`BuildRepl
`
`database
`If AttachId is non-zero, read related
`
`Read related MessageSummaryfrom Catalog
`AttachSummary from Catalog database
`
`Add MessageSummary and AttachSummary (or
`NULL) to ContentArray
`Increment ContentCount
`Set SortKey in Reply from the current Shortcut
`SortKey
`
`
`NS
`
`Sort ContentArray in
`
`
`memory, using values
`from MessageSummary
`and AttachSummary
`
`(end)
`
`Reply Parameters
`= ResultCode
`+ SortKey
`+ ISEOF
`+ ContentCount
`+ ContentArray
`
`= Array of [ MessageSummary + (AttachSummary OR NULL) ] |
`
`FIG. 14
`
`019
`
`019
`
`
`
`U.S. Patent
`
`Apr. 20, 2004
`
`Sheet 19 of 33
`
`US 6,725,228 BI
`
`Read Folder from Catalog
`
`152
`
`Request Parameters
`= Folderld
`+ FolderSortColumn
`+ FolderSortDirection
`
`Position atfirst Shortcut
`in Folder using
`AlternateKey1
`
`Read next Shortcut in Folder
`
`155
`
`(Toaje-ves
`
`The underlying data type
`for the FolderSortColumn
`
`156
`
`End of
`
`Folder?
`
`No
`
`Enumeration
`OR Boolean
`
`Need to build SortKeyif
`FolderSortColumn
`NOT = SortColumn
`OR FolderSortDirection
`NOT = SortDirection
`
`Need to build
`SortKeyif
`FolderSortColumn
`NOT = SortColumn
`
`* Update Folder in Catalog database
`
`If FolderSortColumn is a column in the MessageSummary, read
`the MessageSummary from the Catalog database
`If FolderSortColumn is a columnin the AttachSummary, read the
`AttachSummary from the Catalog database
`Build the SortKey
`Update Shortcut in Catalog database
`
`*
`*
`
`Set FolderSortColumn
`Set FolderSortDirection
`
`FIG. 15
`
`020
`
`020
`
`
`
`U.S. Patent
`
`Apr. 20, 2004
`
`Sheet 20 of 33
`
`US 6,725,228 BI
`
`Containsall tables and fields of Base Layer, plus the following:
`
`a
`
`
`
`a0
`
`
`
`
`
`
`
`
` MessageSummary
`
` Direction
`SendState
`
`IsDeleted
`IsActive
`IsKept
`IsTagged
`
`IsToDo
`
`
`
`KeywordList
`
`Folder
`
`SearchCriteria
`
`FIG. 16
`
`021
`
`021
`
`
`
`U.S. Patent
`
`Apr. 20, 2004
`
`Sheet 21 of 33
`
`US 6,725,228 B1
`
`Root
`|--- Status
`|--- Active Mail
`|--- Deleted
`|--- Drafts
`|--- Kept
`|--- Received
`|--- Sent
`|--- Tagged
`|--- To Do
`|--- Unread
`|--- Waiting Send
`
`-- Date
`|--- Today
`|--- Yesterday
`|--- This Week
`|--- Last Week
`|--- * Automatically created Month folders
`
`-- Attachment
`|--- All Attachments
`|--- * Automatically created AttachmentType folders
`
`-- Keyword
`|--- * Automatically created Keyword folders
`
`-- Search Results
`|--- * Search Results folders
`
`User Folders
`|--- * User created folders
`
`FIG. 17
`
`022
`
`022
`
`
`
`U.S. Patent
`
`Apr. 20, 2004
`
`Sheet 22 of 33
`
`US 6,725,228 BI
`
`Containsall tables and fields of Base Layer and SecondLayer, plus the following:
`
`Folder
`
`
`56
`
`37
`
`IsPendingCorresp
`
`
`AddressList
`
`
`
`
`
`Address
`58
`MessageSummary
`52 AttachSummary
`AddressId
`
`Folderld
`AddressString
`AddressType
`IsPendingCorresp
`
`AlternateKey1
`= AddressString
`(uppercase)
`
`AlternateKey2
`= Folderld
`
`FIG. 18
`
`023
`
`023
`
`
`
`U.S. Patent
`
`Apr. 20, 2004
`
`Sheet 23 of 33
`
`US 6,725,228 B1
`
`Containsall Folders in Base Layer and Second Layer, plus the following:
`
`<Root>
`|--- Correspondents
`|
`|--- Me
`|
`|--- * Automatically created Correspondentfolders
`|
`|--- * User created Correspondentfolders
`
`||
`
`|
`|
`
`--- Bulk Mail
`|--- Unsorted
`|--- * User created Bulk Mail folders
`
`FIG. 19
`
`024
`
`024
`
`
`
`U.S. Patent
`
`Apr. 20, 2004
`
`Sheet 24 of 33
`
`US6,725,228 BI
`
`Includes all Requests and Events in Base Layer and Second Layer, plus the following:
`
`24
`
`29
`
`27
`
`MessageStore Server
`
`Catalog Server
`
`Message Client
`
`IncomingRequests
`
`AddMyAddress—————
`
`ReadFolderAddresses-———_e
`
`MoveAddress-—————
`
`ProcessAddressQueue——@
`
`FIG. 20
`
`025
`
`025
`
`
`
`U.S. Patent
`
`Apr. 20, 2004
`
`Sheet 25 of 33
`
`US 6,725,228 B1
`
`AddressEntry
`
`AddressArray /
`
`——/
`
`
`
`
`
`
`
`
`
`
`
`
`
`FIG. 21A
`
`Phase 1 Processing
`
`218
`ae
`
`StateCounters ;
`OriginCount
`
`ToCount
`
`ShortcutCount
`
`
`
`
`
`
`
`wee ee em em wee ee a a a ar nr ar nr an nen ee ee = 1
`Star $ IncrementIF ( AddressRole = arTo )
`|
`-
`
`FIG. 21B
`
`026
`
`026
`
`
`
`U.S. Patent
`
`Apr. 20, 2004
`
`Sheet 26 of 33
`
`US 6,725,228 BI
`
`Phase 1 Processing
`
`Set to True
`|
`IF
`(Direction = drSend )
`|
`i
`/\ AND ( AddressType = atMyAddress _)
`|
`|
`AND( AddressRole = arFrom )
`Fa
`gf meee iaeeeies
`/
`Set to True
`IF
`(Direction = drReceive )
`|
`_-~ | AND ( AddressType = atMyAddress )
`AND( AddressRole = arTo OR arCc OR arBcc )
`
`|
`|
`3
`
`-
`
` ne a em ete eee eee ee zt
`
`~.L_iSettoTue ti(‘“‘sOSO™S™*~*~*~™” |
`|
`IF ( AddressType = atBulkAddress )
`4
`ec err eee wy ee en eee rie ee ee i
`™“ ~ Pisa er eee eee ee een eer ene ea ee eee ee oa|
`
`Sot Set to True
`\
`\
`1
`IF
` (AddressType = atCorrespAddress )
`
`‘. |__AND ( AddressRole = ( arSender OR arFrom ) )
`\
`Ni Poe ee ee etsAetem ete vere eine year mnie ee ie
`
`|
`\ | Set to True
`\
`IF
` (AddressType = atCorrespAddress )
`AND ( AddressRole = ( arTo or arCc or arBcc) )
`|
`a ae med ame aeS ee ea
`
`FIG. 21C
`
`027
`
`027
`
`
`
`U.S. Patent
`
`Apr. 20, 2004
`
`Sheet 27 of 33
`
`US 6,725,228 BI
`
`Input Parameters
`= MessageSummary
`
`Get next elementin
`MessageSummary's AddressList
`
`225
`
`Yese{
`
`To Phase 2
`
`No
`
`Initialize AddressEntry and add to
`AddressArray
`
`
`
`Increment StateCounters
`
`Read Address from Catalog
`database
`
`: 229
`
`Add Address information to
`AddressEntry
`
`Set StateFlags
`
`FIG. 22
`
`028
`
`028
`
`
`
`U.S. Patent
`
`Apr. 20, 2004
`
`Sheet 28 of 33
`
`US 6,725,228 BI
`
`236
`
`
`
`
`
`
`From Phase 1
`
`Get next AddressEntry in
`AddressArray
`
`
`
`
`End of
`Array?
`
`
`
`No
`
`
`
`Apply Corresp/Bulk Mail Rules to
`AddressEntry as shownin FIG. 24
`
`Yes
`
`239
`
`Create
`Shortcut?
`
`
`
`
`
`
`
`
`
`IF ( AddressId = 0
`
`29K 240
`Do "AddAddressFolder"
`Yes
`as shownin FIG. 25A
`
`Yes
`
`Do
`"UparadePendingCorresp" }«—Yes
`as shown in FIG. 25B.
`
`
`
`Create ,
`Address?
`
`
`IF
`(IsPendingCorresp)
`241A sad
`
`iy
`AND ( IsConfirmedCorresp)
`
`
`
`*
`
`
`
`
`Do “AddChangeShortcut" as
`shown in FIG. 10B.
`Increment ShortcutCount
`
`*
`
`
`
`243
`
`Paried’
`*
`
`Add Shortcut to Unsorted Folder
`Set IsBulkMail to True
`
`Non-zero
`
`Set MessageSummary IsCorresp
`to NOT IsBulkMail
`
`
`
`
`
`
`FIG. 23
`
`029
`
`029
`
`
`
`U.S. Patent
`
`Apr. 20, 2004
`
`Sheet 29 of 33
`
`US 6,725,228 Bl
`
`( IsBulkMail )
`(IF
`| AND ( AddressType = atBulkAddress )
`[IF
`( IsBulkMail ) AND ( IsToMe)
`| AND ( IsFromKnownCorresp )
`AND ( Direction = drReceive )
`, AND ( AddressType = atCorrespAddress )
`| AND ( AddressRole = ( arSender OR arFrom) )
`
`vese(T08)
`
`vese{To)
`
`vese(T0°)
`
`(FIG. 248)
`
`(FIG. 248)
`
`(FIG, 248)
`
`
`
`
`
`CD
`
`iF ( IsBulkMail ) AND ( IsFromMe )
`' AND ( IsToKnownCorresp )
`| AND( Direction = drSend )
`| AND ( AddressType = atCorrespAddress )
`AND( AddressRole = ( arTo OR arCc ORarBec ) i»
`eae ae eae ee ee ae ee ern ne ne ee eee 1
`IF(IsBulkMail )aa i i ee ee ee ee _
`
`
`
`veseffo)
`
`(FIG. 248)
`
`(FIG. 24B)
`
`(FIG. 24B)
`
`(FIG. 24B)
`
`3 “
`
`Y
`
`© “ “
`
`“@
`
`(FIG. 24B)
`
`
`
`
`IF ( Direction = drSend )
`|AND ( AddressType = atMyAddress )
`
`'IF (Direction = drSend)
`) AND ( AddressType = atNoAddress )
`1 AND ( OriginCount = 1 )
`AND( AddressRole = arFrom )
`
`( Direction = drSend )
`|Rig
`| AND ( ToCount = 1)
`: AND ( AddressRole = arTo )
`{IF
`( Direction = drSend )
`AND( AddressRole = ( arTo OR arCe OR arBec )) |
`
`[IF (Direction=drReceive)AND(IsToMe)
`AND ( AddressRole = ( arSender OR arFrom ) )
`
`030
`
`IF ( Direction = drReceive )
`| AND ( NOT IsToMe)
`,; AND ( IsFromKnownCorresp )
`(FIG. 248)
`vese(fod)
`| AND ( AddressType = atCorrespAddress )
`| AND( AddressRole = ( arSender OR arFrom))
`
`(IF (Direction = drReceive ) AND(IsToMe )
`
`©
`AND ( AddressType = atMyAddress)
`Y
`(FIG. 24B)
`
`030
`
`
`
`U.S. Patent
`
`Apr. 20, 2004
`
`Sheet 30 of 33
`
`US 6,725,228 B1
`
`[Bulk Mail Shortcut]
`Set CreateShortcut to True.
`
`[Confirmed Corresp Shortcut]
`Set IsConfirmedCorresp to True.
`
`Set CreateShortcut to True.
`
`
`
`[Pending Corresp Shortcut]
`Set IsPendingCorresp to True.
`Set Create Shortcut to True.
`
`
`["Me" Shortcut]
`Set CreateShortcut to True.
`
`Set FolderId to "Me" folder.
`
`FIG. 24B
`
`031
`
`031
`
`
`
`U.S. Patent
`
`Apr. 20, 2004
`
`Sheet 31 of 33
`
`US 6,725,228 B1
`
`AddAddressFolder
`
`
`
`
`
`
`Build Folder as follows:
`
`
`-- Set FolderName from AddressName, or from
`AddressString if AddressName is empty.
`
`-- Set FolderType to ftCorresp
`
`-- Set IsPendingCorresp from AddressEntry
`
`*
`Try to add Folder to Catalog database
`
`
`*
`If FolderName already exists, generate a unique
`
`FolderName and then add Folder to Catalog
`Input Parameters
`database
`No
`= AddressEntry
`*
`Save FolderId to AddressEntry
`
`Generate FolderAdded Event
`
`
`Read Folder from
`Catalog database
`
`
`
`*
`Build Address from AddressEntry
`
`Set AddressType based on FolderType
`*
`
`ftMe
`--> atMyAddress
`ftCorresp --> atCorresp
`
`
`ftBulkMail --> atBulkMail
`« Add Address to Catalog database
`
`
`
`FIG. 25A
`
`UpgradePendingCorresp
`
` *e#8@@
`
`
` Read Folder from Catalog database
`Set IsPendingCorresp to False
`
`Do "UpdateFolder” as shownin FIG.1D,
`
`Read Address from Catalog database
`
`Set isPendingCorresp to False
`
`Input Parameters
`Update Address in Catalog database
`
`= AddressEntry
`
`FIG. 25B
`
`032
`
`032
`
`
`
`U.S. Patent
`
`Apr. 20, 2004
`
`Sheet 32 of 33
`
`US 6,725,228 B1
`
`Input Parameters
`= AddressString
`+ TargetFolderld
`
`TargetFolderId =
`Folderld of "Unsorted"?
`
`Delete Address
`from Catalog
`database
`
`Update Address in Catalog database
`
`Set FolderId in Address to TargetFolderld
`Read TargetFolder from Catalog database
`Set AddressType based on TargetFolder’s
`FolderType
`--> atMyAddress
`ftMe
`ftCorresp --> atCorresp
`ftBulkMail --> atBulkMail
`Set IsPendingCorresp in Address from
`TargetFolder
`
`Read Address from
`Catalog database using
`AlternateKey1
`
`Add AddressString
`to AddressQueue
`
`033
`
`033
`
`
`
`U.S. Patent
`
`Apr. 20, 2004
`
`Sheet 33 of 33
`
`US 6,725,228 B1
`
`database if IsCorresp has changed
`
`Position to first MessageSummary
`in Catalog database
`
`Get next MessageSummary in
`Catalog database
`
`DoesanyAddressStringin
`
`the AddressQueue match
`an AddressString in the
`MessageSummary
`AddressList?
`
`“"
`
`No
`
`Empty
`AddressQueue
`
`Process Shortcuts as shownin FIG. 10B
`*
`* Update MessageSummary in Catalog
`
`FIG. 27
`
`034
`
`034
`
`
`
`US 6,725,228 B1
`
`1
`SYSTEM FOR MANAGING AND
`ORGANIZING STORED ELECTRONIC
`MESSAGES
`
`FIELD OF THE INVENTION
`
`This invention relates to electronic messaging systems
`and,
`in particular relates to systems for managing and
`organizing electronic messages. Messages may be e-mail
`messages, voice mail messages, digitized faxes or the like.
`Specific aspects of the invention provide computer-
`implemented methods for managing and organizing elec-
`tronic messages, computer systems for managing and orga-
`nizing electronic messages, and computer-readable media
`containing computer instructions which, when executed by
`the computer cause the computer to perform a method
`according to the invention.
`BACKGROUNDOF THE INVENTION
`
`2
`Further, once an e-mail message has been received it can
`be difficult to find the messagelater, especially if there are
`many folders into which the message could have been
`placed. This is frustrating and inefficient for the user.
`Some current electronic mail software is capable of
`filtering incoming e-mail messages by applying a series of
`rules. The filtering rules may be automatically executed each
`lime a message is sent or received. The current version of
`Microsoft Outlook has a facility which allows users to create
`such rules, for example. U.S. Pat. No. 6,057,841, Thurlow et
`al., describes a system for applying a set ofelectronic
`message processing rules for managing incoming and out-
`going electronic messages. U.S. Pat. No. 5,377,354, Scan-
`nell et al., also describes a rules-based filtering mechanism.
`Rules can execute specific tasks when user-defined crite-
`ria are met. Rules can be used to process electronic messages
`without requiring users to spent a lotof time sorting through
`their inboxes deleting, filing, and responding to their mes-
`sages. While filter rules are powerful, they are also difficult
`to use because they are typically implemented asaseries of
`Electronic messaging, which includes electronic mail (or
`instructions against which each message is evaluated. If the
`“e-mail”) messaging, is now an accepted, and some would
`number of rules exceeds a relatively small number the
`say vital, medium for business and personal communica-
`overall
`rule set becomes very difficult
`to understand.
`tions. The rapid growth of electronic messaging is expected
`Another disadvantageis that rules must be created manually
`to continue. This growth brings an increasingly serious ,
`and can involve a significant amountof effort if a user wants
`problem of how to managethe volume of messages. Accord-
`to organize their messages in a thorough manner, such as by
`ing toa 1998 Pitney Bowessurvey, 71%of respondents said
`correspondent. A further disadvantage is that e-mail systems
`they felt overwhelmed by the number of messages they
`which apply filtering rules are typically restricted by the
`receive. This problem is becoming more severe. John
`folder/message model and cannot organize a message into
`Dvorak,a frequent writer on the topic of computing states in
`multiple folders without creating multiple copies of the
`PC Computing magazine that“ ....we have poortools to sort
`message. As a result of the foregoing disadvantages many
`and organize (or even find) the e-mail we collect”.
`users do not bother to set up such rules. Even whenthe rules
`Electronic messages, which may include attachments of
`have been set up they act only when a message is sent or
`diverse kinds, are sent and received through the use of
`received. Such rules are incapable of managing messages
`messaging software. For example, e-mail messages are sent
`after they have been received or sent.
`and received by e-mail software such as Microsoft’s OUT-
`Other features which software vendors have provided in
`LOOK™ or Netscape’s COMMUNICATOR™. Other
`an attempt to help users organize their messages are key-
`widely used types of electronic messaging are voice mail,
`words(also referred to as “categories”), tags (also referred
`fax and instant messaging. The vast majority of current
`to as “flags”), searching tools, and links to other objects such
`messaging software is based on design principles that origi-
`as task lists. While these features improve the manageability
`nated when message volumes were low. Current e-mail
`of e-mail they are less powerfulthan filtering rules and have
`software, for example, provides rudimentary features for
`proven inadequate for dealing with higher message volumes.
`organizing e-mail messages (both incoming and outgoing)
`into various folders. The most basic model saves received
`Keywords and tags let
`a user highlight and identify
`messagesto distinguish them from other stored messages. A
`messages in an Inbox folder, messages waiting delivery in an
`major drawback to these mechanismsis that the highlighted
`Outbox folder, and sent messages in a Sent Messagesfolder.
`messagesare visible only in the folder to which the message
`Users can create additional user folders to which they can
`belongs. The value of these mechanisms is significantly
`move or copy messages. Refinements to this basic model
`reduced because there is no fast and convenient way to
`include providing additional system folders such as Drafts
`locate all tagged messages or all messages that have been
`and Wastebasket folders. In general, the user is responsible 5
`assigned a given keyword.
`for moving e-mail messages between folders and for man-
`aging the messages once they have been placedinto a folder.
`in dealing with large
`tool
`Searching is an important
`This can be an onerous responsibility, especially in cases
`message volumes. Traditional sequential search techniques
`where the user receives large volumes of e-mail messages as
`are usually too time-consuming to make them very useful
`may easily occur, for example, if the user subscribes to one s
`for larger message stores. As a result, there have been recent
`or more high volume mailing lists.
`efforts to provide systems which implementfull-text index-
`A fundamental weakness ofthis folder/message model is
`ing and retrieval capabilities for message stores. While
`that a message can only exist in a single folder at a time.
`searching is an important technique for finding previously
`While a user can place copies of e-mail messages into
`sent or received messages,
`it is not particularly useful or
`multiple folders the user must manage the copies separately.
`efficient for dealing with messages as they are received and
`If the user wishes to see a message in multiple folders, then
`then handled by the user. A search must be performed cach
`he or she must make multiple copies of the message, which
`lime a user wishes to access messages which match a
`results in using additional storage space and in creating more
`particular set of search criteria. The user is generally forced
`messages that need to be managed. This model also requires
`to manually enterthe search criteria. Once a search has been
`that the user manually organize each message. This can lead
`run the results of the search may be placed into a separate
`to cluttered folders and a general lack of organization in the
`“search results” folder (in addition to the folder in which the
`stored e-mail messages that a user accumulates over time.
`original message resides). Search results folders are not
`
`30
`
`35
`
`40
`
`45
`
`60
`
`65
`
`035
`
`035
`
`
`
`US 6,725,228 B1
`
`3
`generally useful for organizing electronic messages because
`of their limited capabilities. Such folders cannot form the
`basis for a more general purpose solution for organizing
`messages into multiple folders. For example the Microsoft
`Platform SDK describes some limitations of MAPI search
`results folders as follows:
`
`The only way that the contents of a search-results folder
`can be modified is through the IMAPIContainer::Set-
`SearchCriteria call;
`Messages cannot be moved or copied into or out of
`search-results folders; and,
`Search-results folders cannot contain subfolders.
`Some software packages allow objects to be linked to
`gone another. For example, Microsoft Outlook 2000 has a
`task list. A user can add a shortcut to an electronic message
`to a task. Outlook 2000 does not provide any facilities to act
`on the message to which the shortcut refers. The Outlook
`2000 task list is not flexible enough for use in the effective
`organization of electronic messages.
`A number of attempts have been made to overcome
`problemsassociated with the current folder/message model.
`These include U.S. Pat. No. 5,948,058, Kudoh et al., which
`describes a method for cataloging a message into multiple
`categories. An array of bitmaps in the message is used to
`identify the categories to which a message belongs. This is
`a very simple implementation that would have serious
`performance problems when searching forall messages that
`belong to a category—all messages in the message store
`would need to be examined.
`U.S. Pat. No. 6,029,164, Birrell et al., describes a method
`for adding labels to messages which are then indexed by a
`full-text
`index and retrieval engine. An advantage of the
`Birrell et al. system over the system of Kudoh et al. is that
`it provides a rapid global search capability for finding
`messages with the desired label, and provides the ability for
`the user to add, modify or delete labels. Some disadvantages
`of the Birrell et al. system are that messages are processed
`in batches (for performan