`Clark et al.
`
`(10) Patent N0.:
`(45) Date of Patent:
`
`US 6,725,228 B1
`Apr. 20, 2004
`
`US006725228B1
`
`(54) SYSTEM FOR MANAGING AND
`ORGANIZING STORED ELECTRONIC
`
`MESSAGES
`
`(76) Inventors: David Morley Clark, 920 Innes Street,
`Nelson British Columbia VlL 5T2
`_
`’
`_
`_
`(c_A)> Thomas Wllson Qlbson, 230_
`gllgLhfztrgeitégel?m grit/i511 lfiirlmbla
`;
`avi
`itc e
`Bracewell, 708 Third Street, Nelson,
`British Columbia V1L 2R2 (CA); Je?
`Toy Tsa0 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(k)) by 212 days_
`
`(21) APPL NO: 09 /704’199
`
`O t. 31 2000
`22 F1 d:
`c
`’
`(
`)
`1 e
`(51) Int. Cl.7 ................................................ .. G06F 7/00
`(52) US. Cl. .......................................... .. 707/102; 707/7
`(58) Field of Search .............................. .. 707/7, 200, 2,
`707/102
`
`6,167,402 A * 12/2000 Yeager ...................... .. 707/10
`6,182,071 B1 * 1/2001 Fushimi ....................... .. 707/7
`
`. . . .. 707/3
`6,226,630 B1 * 5/2001 BIIIIIl'CIS . . . . . .
`707/500
`6,324,569 B1 * 11/2001 Og1lv1e et a1.
`709/206
`6’396’513 B1 : 5/2002 Helfman et a1‘ '
`6,424,995 B1
`7/2002 Shuman .................... .. 709/206
`6,449,615 B1 * 9/2002 Liu et a1. .................... .. 707/10
`6,466,941 B1 * 10/2002 Rowe et a1. .
`707/102
`6,507,846 B1 * 1/2003 Consens ................... .. 707/100
`FOREIGN PATENT DOCUMENTS
`WOW/04344
`1/1999
`
`EP
`
`OTHER PUBLICATIONS
`
`Microsoft Internet Explorer 1995_2001~T
`Dvorak, John C., Scarter 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 L~ibrary—Apr.~1999, Messaging API (MAPI), Legal
`Information, Developing a Message Store Provider.
`
`* cited by examiner
`'
`~
`_
`_
`Primary EXam”_1@r—K1m V11_ _
`Assistant Examiner I'IOnp1a_1S1r Hamllton _
`(74) Attorney, Agent, or Fzrm—Oyen, Wiggs, Green &
`Mutala
`
`
`
`References U'S' PATENT DOCUMENTS
`
`A computer-based system catalogs and retrieves electronic
`
`4,611,280 A * 9/1986 Linderman ................ .. 712/300
`4,809,158 A * 2/1989 McCauley ...... ..
`707/7
`5,274,805 A * 12/1993 Ferguson et al- ------------ -- 707/7
`57377354 A * 12/1994 Scannell ct a1~
`2
`g/
`lvagali
`"""""""""" " 707”
`5’548’789 A
`Q1996 Ni‘ltgnuiga'
`5:615:367 A * 3/1997 Bennett et a1‘ ~~~~~~~~~~~ “ 7O7/1O2
`5,694,616 A * 12/1997 Johnson et a1.
`709/207
`5,813,009 A * 9/1998 Johnson et a1. ........... .. 707/100
`5,899,995 A
`5/1999 Millier et 81,
`5,948,058 A * 9/1999 Kudoh et a1. .......... .. 707/104.1
`6,009,442 A 12/ 1999 Chen et 91-
`670297164 A
`2/2000 Blnell et al-
`6,057,841 A * 5/2000 Thlérlow et a1‘
`6,073,131 A
`6/2000 R0~ erti ........................ .. 707/7
`6,073,142 A * 6/2000 Geiger et a1. ..
`707/500
`6,088,696 A * 7/2000 Moon et a1.
`.. 707/10
`6,154,740 A * 11/2000 Shah ........................... .. 707/7
`
`60
`
`6e
`
`/
`EmaDganize!
`Help
`File
`Edit
`view] Touts
`H0‘
`Shh/5 T0 Name
`
`II a
`
`a4
`
`65
`
`66
`
`W \ \
`\
`\
`\
`\
`\
`\
`
`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
`tamollsly The System Preferably permlts messages tqbe
`organlled byi 1) baslc message and attachment Propemes,
`eg 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
`
`X
`
`Date
`
`_
`
`51 -\v
`
`I _ _
`
`7: : - :
`
`Fmm
`SZDIM
`
`\
`
`Actwe Mail (14)
`To Do (4)
`
`614 81223111“
`YesterdaHG)
`Thisweek
`Elizabelh Green (2)
`eonsexrem)
`
`T’Iifljliem
`
`x45 Study<keyworl1> -—
`
`52C 0 H13 Status \Gnvrespondeml Bulk Mail | Keyvmm | Dale | AaeenmemH Search | User
`
`625 J
`
`69
`
`,1
`
`Page 1 of 57
`
`Samsung Exhibit 1007
`
`
`
`U.S. Patent
`US. Patent
`
`Apr. 20, 2004
`Apr. 20, 2004
`
`Sheet 1 0f 33
`Sheet 1 0f 33
`
`US 6,725,228 B1
`US 6,725,228 B1
`
`
`
`FIG. 1A
`FIG. 1A
`
`Page 2 of 57
`
`Page 2 of 57
`
`
`
`U.S. Patent
`US. Patent
`
`Apr. 20, 2004
`Apr. 20, 2004
`
`Sheet 2 0f 33
`Sheet 2 0f 33
`
`US 6,725,228 B1
`US 6,725,228 B1
`
`E f E ............. --®
`
`
`
`E 5%
`w @ mi E
`@
`
`FIG. 1B
`FIG. 13
`
`Page 3 of 57
`
`Page 3 of 57
`
`
`
`U.S. Patent
`
`Apr. 20, 2004
`
`Sheet 3 0f 33
`
`US 6,725,228 B1
`
`251
`User Interface Device
`
`20\
`
`27 1 Message Client
`
`a‘?
`a?
`q_
`
`*5
`3
`8
`a:
`
`26 W
`
`Transport
`Server
`
`Events
`
`Requests
`
`Message Store
`Server(s)
`
`Incoming Events
`
`Catalog Server
`
`Outgoing Requests
`
`291
`
`14
`
`FIG.
`2
`
`Page 4 of 57
`
`
`
`U.S. Patent
`
`Apr. 20, 2004
`
`Sheet 4 0f 33
`
`US 6,725,228 B1
`
`32
`
`/ -
`
`ReceiveDate: Today 10:10:05 Hg.“ 4’ I'" This Week
`Direction: Received
`\\ ‘+ |--- Thls Month
`\ Status
`\\ |--- Received
`0~\_\ Correspondent
`|--- Tom Gibson
`
`Envelope
`From: Tom Gibson
`To: David Clark
`Cc: David Bracewell
`
`36 l Contents
`
`Subject: White paper
`Body:
`Here is the white paper
`Attachment
`for your review.
`36A K_Attachment: White Paper.doc H” I
`gllo'éttachments
`
`34 1 Status & Orgamzatronal
`Information
`
`Status: IsUnread
`
`stziitusU
`
`d
`
`4> --- nrea
`.
`
`.
`
`Keywords: Marketing
`White Paper
`
`0‘
`
`4-’ |"' ACtIVE Keywords
`0——_\:\> |—-- Marketing
`H |--- White Paper
`
`
`
`33 \_ Transport Header Jalti Tcday
`
`Page 5 of 57
`
`
`
`U.S. Patent
`
`Apr. 20, 2004
`
`Sheet 5 0f 33
`
`US 6,725,228 B1
`
`18 1
`
`25 T
`
`User
`Interface
`Dev'ce
`
`29
`1 Catalog
`server
`:
`Message
`Store
`24 J Server(s)
`
`Catalog
`database
`
`\—-/
`
`23
`
`Store(s)
`
`CLIENT COMPUTER
`
`40A -/
`
`FIG. 4A
`
`12
`
`28
`
`18 1
`
`25 i
`User
`Interface
`Device
`
`27 1
`Message
`-
`chant
`
`14
`
`Network
`
`CLIENT COMPUTER
`
`24
`
`4081
`
`FIG. 4B
`
`Catalog
`database
`-
`Message v
`Store
`Message
`Server(s)
`Store(s)
`23
`
`SERVER COMPUTER
`
`18 1
`
`25 T
`User
`Interface
`Device
`
`27
`
`M3322?
`
`14
`
`12 x
`
`/"
`
`g
`Catalog
`database
`2s
`
`29
`
`24 “N
`Message
`store
`Server(s)
`
`Message
`Store(s)
`23
`
`CLIENT COMPUTER
`
`SERVER COMPUTER
`
`FIG. 4C
`
`Page 6 of 57
`
`
`
`U.S. Patent
`
`Apr. 20, 2004
`
`Sheet 6 0f 33
`
`US 6,725,228 B1
`
`28 _\
`
`Catalog
`
`Folder
`Address [- 58
`AddressId 2% FolderId
`
`[- 56
`
`Shortcut [- 57
`rtis?gld
`Foldcerld
`
`51
`StoreLink [-
`storeunkld
`storeId (FK)\
`\ 51A
`
`52
`
`Messa S
`9e “mmary
`Messageld
`StoreLinkId (FK)/
`Messa eId FK
`store
`9
`( K 52A
`
`_ 52B
`
`AttachSumma
`ry
`
`53
`
`Messageld
`hm (FK)
`C
`L 53A
`
`OF
`
`23 _\
`
`Storeld
`
`Message Store
`
`[- 54
`Message
`StoreMessageId
`<message data>
`
`[- 55
`
`Attachment
`StoreAttachId
`<attachment data>
`
`FIG. 5A
`
`Page 7 of 57
`
`
`
`U.S. Patent
`
`Apr. 20, 2004
`
`Sheet 7 0f 33
`
`US 6,725,228 B1
`
`50 —\
`
`Catalog / Message Store
`
`Address [' 58
`AddressId
`
`/
`
`Folder [‘ 56
`FolderId
`
`Shortcut f 57
`Messageld
`Attachld
`FolderId
`
`MessageSummary
`MessageId
`
`52'
`
`AttachSummary 53'
`MessageId
`/ AttachId
`
`54'
`/—
`
`M
`“sage
`Messageld
`<message data>
`
`[- 55'
`
`Attachment
`Messageld
`AttachId
`<attachment data>
`
`FIG. 5B
`
`Page 8 of 57
`
`
`
`U.S. Patent
`
`Apr. 20, 2004
`
`Sheet 8 0f 33
`
`US 6,725,228 B1
`
`60x
`
`[68
`I
`Email Orlqanizer
`Help
`File
`Edit
`View I Tools
`Ii]
`Hot
`Status I To [Name
`
`64x 65x 66X
`\
`\
`\
`\ ‘Subject \
`\
`
`61X__
`
`______
`
`Active Mail (14)
`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>
`
`From:
`Subject:
`
`[Date
`
`—
`
`\
`
`62C —\—HoJ Status ICorrespondentl Bulk Mail 1 Keyword I Date 1 Attachment! ‘ Search 1 User
`15‘ msgs of 100
`L 69
`
`628 J
`
`FIG. 6
`
`62A J
`
`67 J
`
`62
`
`Page 9 of 57
`
`
`
`U.S. Patent
`
`Apr. 20, 2004
`
`Sheet 9 0f 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
`
`74X
`
`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 manual organization in user created folders
`Improved ?ltering mechanisms
`Improved handling of search results
`
`BASE LAYER - Base Services
`Catalog database
`Uni?ed 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 contenG
`
`FIG. 7
`
`Page 10 of 57
`
`
`
`U.S. Patent
`
`Apr. 20, 2004
`
`Sheet 10 0f 33
`
`US 6,725,228 B1
`
`AlternateKeyl
`= ParentFolderId
`
`AlternateKeyZ
`= ParentFolderId
`+ FolderName
`(uppercase)
`
`A|ternateKey3
`= IsHot
`
`Folder
`FolderId
`ParentFolderId
`FolderName
`fg?rTvpe
`_
`
`Shortcut
`MessageId
`AttachId
`FolderId
`SortKey
`/ SortColumn
`
`57
`[_
`
`AlternateKeyl
`= FQIderId
`+ SortKey
`
`.
`.
`F
`OIdEI'SOI’tDII'ECtIO?
`
`ShortcutCount
`UnreadCount
`CorrespShortcutCount
`UnreadCorrespCount
`
`TriggerAction
`TnggerDateTlme
`-
`-
`IsUnread
`lscorres
`I U rshlzrtcut
`5 Se
`
`= Tl'iggerDateTime
`
`52
`
`i
`M
`essageSummary
`MessageId
`FolderExcIudeList
`IsUnread
`'
`IsCorresp
`MessageDateTnme
`DisplayNames
`Subject
`
`Attachsummaryf 53
`Messageld
`Attachld
`\ AttachType
`AttachName
`AttachSize
`
`FIG. 8
`
`Page 11 of 57
`
`
`
`U.S. Patent
`
`Apr. 20, 2004
`
`Sheet 11 0f 33
`
`US 6,725,228 B1
`
`24W
`
`Message Store Server
`
`291
`
`Catalog Server
`
`Inggming Eventg
`
`o———MessageAdded—-—>
`0——MessageChanged———>
`e———MessageDeleted—->
`
`W
`
`4———ReadMessage———-o
`
`Message Client
`
`Ingoming Reguegg
`
`<-——--AddFolder-—-——0
`<-———ChangeFo|der———-o
`<--——De|eteFolder———0
`<—-——ReadFo|der-—-—o
`<-—ReadFo|derSubtree—-0
`<———ReadHotFolders-——o
`<——ReadFo|derContents——o
`<-—ChangeFoIderSortKey—-—o
`4—-AddShortcut———-—0
`<-——DeleteShortcut-——o
`<—DeleteFolderShortcuts—-o
`<——ReadMessageSummary—-o
`4~—ReadAttachSummary——o
`
`Qutgoing Events
`
`FolderAdded——>
`FoIderChanged——->
`FolderHotChanged—->
`FolderDeleted-—>
`ShortcutAdded-———>
`ShortcutDeleted———>
`ShortcutSortKeyChanged—>
`SummaryChanged——>
`
`FIG. 9
`
`Page 12 of 57
`
`
`
`U.S. Patent
`
`Apr. 20, 2004
`
`Sheet 12 0f 33
`
`US 6,725,228 B1
`
`ShortcutEntry
`ShortcutAction
`Excluded
`OldShortcut
`
`Shortcut
`[ AttachSummary ]
`
`Memory structures
`
`100 W
`ShortcutArray
`
`100A
`
`FIG. 10A
`
`101 W
`
`Input Parameters
`= MessageSummary
`
`102 X Read all Shortcuts for Message. Save each Shortcut as an OldShortcut
`object in ShortcutArray with ShortcutAction of saDelete.
`
`103 —1_
`
`104 1
`
`l
`Execute Second Layer 2 Automatic Organization Rules
`(which use "AddChangeShortcut" to create Shortcuts)
`
`l
`Execute Second Layer Filter Rules
`(which use "AddChangeShortcut" to create Shortcuts)
`l
`
`105 1 Execute Third Layer Correspondent and Bulk Mail Rules
`(which use "AddChangeShortcut" to create sholtcuts)
`l
`106 1 For each element in FolderExcludeList, do "ValidateFolderListElement".
`If valid element, set Excluded ?ag in matching ShortcutEntry to True.
`l
`
`107 1 Process each ShortcutEntry as shown in FIG. 11A.
`
`FIG. 10B
`
`Page 13 of 57
`
`
`
`U.S. Patent
`
`Apr. 20, 2004
`
`Sheet 13 0f 33
`
`US 6,725,228 B1
`
`AddChangeShortcut
`
`Input Parameters
`Z rgiiggm
`Search ShortcutArray for J_ 103
`+ Folderld
`matching Shortcut or
`+ TriggerAction @—> OldShortcut (using
`+ TriggerDateTime
`MessageId + AttachId +
`FolderId as search key)
`+ IsUserShortcut
`
`Add ShortcutEntry to J- 108A
`ShortcutArray. Set <-——Yes
`ShortcutAction to saAdd.
`
`108C
`{-
`"
`Build Shortcut object in ShortcutEntry,
`using info from Input Parameters.
`
`‘
`
`_,~ 1088
`
`Set ShortcutAction
`to saKeep.
`
`FIG. 10C
`
`ValidateFolderListElemen
`
`@ Read Folder from Catalog
`
`database
`
`V
`If FolderDateTime in element
`doesn't match value in
`Folder, delete element from @
`FolderExcludeList
`
`FIG. 10D
`
`Page 14 of 57
`
`
`
`U.S. Patent
`
`Apr. 20, 2004
`
`Sheet 14 0f 33
`
`US 6,725,228 B1
`
`110 \
`
`Input Parameters
`= ShortcutEntry
`
`(- 111
`
`Read Folder from Catalog
`database
`
`saAdd
`
`Excluded,
`'
`
`Yes
`
`saKeep
`
`DeleteShortcut
`
`(- 114
`
`-
`
`-
`7
`'
`
`-
`
`With OldShortcut, do
`"DecrementFolderCounts"
`(FIG. 11B)
`Delete Shortcut from
`Catalog database
`Generate ShortcutDeleted
`Event
`Do "UpdateFolder" (FIG.
`118
`)
`
`N°
`
`r- 113
`
`v UpdateShortcut
`
`No
`
`cut" (FIG f- 112
`‘
`
`-
`
`‘Ad
`11B)
`w‘ h Sh rtc t, d
`nlrlitcremgnté'oldefcountsu
`(FIG 11B)
`'
`22:52:)?“ t° Catabg
`Generate ShortcutAdded
`Event
`. Do "UpdateFolder" (FIG.
`
`_
`
`-
`
`-
`-
`
`-
`
`-
`
`-
`-
`
`-
`
`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)
`
`‘V
`
`r_ 115
`
`m Set ShortcutTimer as shown in FIG. 13 —
`
`FIG. 11A
`
`Page 15 of 57
`
`
`
`U.S. Patent
`
`Apr. 20, 2004
`
`Sheet 15 0f 33
`
`US 6,725,228 B1
`
`BuiIdShortcut
`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
`
`Page 16 of 57
`
`
`
`U.S. Patent
`
`Apr. 20, 2004
`
`Sheet 16 0f 33
`
`US 6,725,228 B1
`
`SHORTCUT STRUCTURE
`
`FLAGS ENCODING
`
`Byte
`Offset Length Field
`0
`4
`MessageId
`4
`2
`AttachId
`6
`4
`FolderId
`10
`6
`SortKey
`16
`1
`SortColumn
`17
`1
`TriggerAction
`18
`4
`TriggerDateTime
`22
`1
`Flags
`23
`1
`IsCorresp
`
`Bit
`O
`1
`2
`
`Length Field
`1
`SortDirection
`1
`IsUnread
`1
`IsUserShortcut
`
`FIELD TYPE
`
`SORT KEY FORMAT
`
`Notes
`
`_
`_
`Umcodestrmg
`
`UCW1
`I
`
`UCW2
`l
`
`UCW3
`l
`
`Unicode Character Weights of
`?rst 3 characters of string.
`
`AnsiString
`
`C1
`
`Values of
`string.
`
`6 Characters of
`
`
`
`DateTime Enumeration OR
`
`YY
`
`mm 55 W : Year _
`
`
`
`Boolean (sdDescending)
`
`
`
`Value |
`
`YY
`
`YY : Year _
`
`Enumeration OR
`Boolean
`(sdAscending)
`
`va'ue
`I
`
`FY53
`
`_2;D5
`
`YY = Year - 1950
`
`mega’32 OR
`Integerm
`
`--------------- Bits ------------ --
`31-24l 23-16‘ 15-sl 7-0
`
`Not Used
`I
`
`Bits are numbered with 0 being
`the least signi?cant and 31 the
`most signi?cant.
`
`FIG. 12
`
`Page 17 of 57
`
`
`
`U.S. Patent
`
`Apr. 20, 2004
`
`Sheet 17 0f 33
`
`US 6,725,228 B1
`
`130 w
`
`Startup
`Processing
`
`J- 132
`Initialize ShortcutTimer
`to inactive state
`
`l
`J- 133
`Read ?rst Shortcut
`from Catalog database
`using AlternateKeyZ
`
`135
`AddChange
`Shortcut
`
`If TriggerDateTime is non-zero and is
`less than ShortcutTimer, reset
`ShortcutTimer to TriggerDateTi me
`
`137
`Shortcut
`Timer
`
`Read Shortcut from Catalog database
`If TriggerAction is taDeleteShortcut then
`generate an internal DeleteShortcut Request.
`
`J- 138
`
`FIG. 13
`
`Page 18 of 57
`
`
`
`U.S. Patent
`
`Apr. 20, 2004
`
`Sheet 18 0f 33
`
`US 6,725,228 B1
`
`140 x
`
`Request Parameters
`= FolderId
`+ SortKey
`+ SortDirection
`+ Requestcount
`+ CorrespOnly
`
`N0
`
`[- 143
`
`SdAS¢§nding [- 143A
`
`[- 1438
`
`ugirigléjegdsaertld
`position on Shortcut
`A'temateKeYl
`
`Position at ?rst
`Shortcut in Folder
`using AlternateKeyl
`
`Position at last
`Shortcut in Folder
`using AlternateKeyl
`
`W Read Next/Prev Shortcut in Folder ‘
`
`(depending on SortDirection)
`
`[- 145A
`
`Set IsEOF to
`True
`
`145
`
`Yes
`
`End of
`Folder?
`
`Is (CorrespOnly = True)
`AND (IsCorresp = False) ?
`
`"
`
`YES
`
`Enough?
`
`15(C0ntentcount >=
`RequestCount) AND
`(Current SortKey NOT =
`Previous SortKey)?
`
`147
`
`Sort ContentArray in __f_ 149
`memory, using values
`from MessageSummary
`and AttaChSUmmaFY
`
`~
`
`-
`
`_
`I'- 148
`l
`BulldReP'Y
`-
`Read related MessageSummary from Catalog
`database
`If AttachId is non-zero, read related
`AttachSummary from Catalog database
`Add MessageSummary and AttachSummary (or
`NULL) to ContentArray
`Increment ContentCount
`Set SortKey in Reply from the current Shortcut
`SortKey
`
`Reply Parameters
`= Resultcode
`+ SortKey
`+ IsEOF
`+ ContentCount
`+ ContentArray
`= Array of [ MessageSummary + (AttachSummary OR NULL) ]
`
`-
`-
`
`FIG. 14
`
`Page 19 of 57
`
`
`
`U.S. Patent
`
`Apr. 20, 2004
`
`Sheet 19 0f 33
`
`US 6,725,228 B1
`
`150 w
`
`Request Parameters
`
`= FolderId
`
`+ FolderSortColumn
`+ FolderSortDirection
`
`Read Folder from Catalog J- 152
`database
`‘
`
`-
`
`-
`
`posltilgllg?jgs?ssiggrtcut J- 154
`A'temateKeYl
`
`L
`Read next Shortcut in Folder
`
`J- 155
`:
`
`1
`
`NO
`
`The underlying data type
`for the FolderSortColumn
`
`Enumeration
`OR Boolean
`
`Need to build SortKey if
`FolderSortColumn
`NOT = SortColumn
`OR FolderSortDirection
`NOT = SortDirection
`
`158A
`
`156
`
`157
`
`No
`
`Need to build
`SortKey if
`FolderSortColumn
`NOT = SortColumn
`
`-
`
`-
`
`'
`~
`
`If FolderSortColumn is a column in the MessageSummary, read
`the MessageSummary from the Catalog database
`If FolderSortColumn is a column in the AttachSummary, read the
`AttachSummary from the Catalog database
`Build the SortKey
`Update Shortcut in Catalog database
`
`J- 159
`
`derSortColumn
`Set Fol
`derSortDirection
`Set Fol
`Update Folder in Catalog database
`
`@
`
`FIG. 15
`
`Page 20 of 57
`
`
`
`US. Patent
`
`Apr. 20, 2004
`
`Sheet 20 0f 33
`
`US 6,725,228 B1
`
`Contains all tables and fields of Base Layer, plus the following:
`
` Direction
` IsToDo
`
`AttachSummary
`
`53
`
`SendState
`IsDeIeted
`IsActive
`
`IsKept
`IsTagged
`
`KeywordList
`
`FIG. 16
`
`Page 21 0f 57
`
`Page 21 of 57
`
`
`
`US. Patent
`
`Apr. 20, 2004
`
`Sheet 21 0f 33
`
`US 6,725,228 B1
`
`Root
`
`|--- Status
`|
`|--- Active Mail
`|--— Deleted
`|--- Drafts
`|--- Kept
`|--- Received
`|--- Sent
`|--- Tagged
`|--- To Do
`|--- Unread
`|--- Waiting Send
`
`| I I I I I I I I I I I I I I I I I I I I |
`
`--- 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
`
`Page 22 of 57
`
`Page 22 of 57
`
`
`
`US. Patent
`
`Apr. 20, 2004
`
`Sheet 22 0f 33
`
`US 6,725,228 B1
`
`Contains all tables and fields of Base Layer and Second Layer, plus the following:
`
`Folder
`
`56
`
`57
`
`
`
`
` Address
`
`
` AddressList
`
`
`IsPendingCorresp
`
`AddressId
`
`FolderId
`
`AddressString
`AddressType
`IsPendingCorresp
`
`58
`
`MessageSummary
`
`52 AttachSummary
`
`53
`
`AlternateKeyl
`= AddressString
`(uppercase)
`
`AlternateKeyZ
`= FolderId
`
`FIG. 18
`
`Page 23 0f 57
`
`Page 23 of 57
`
`
`
`US. Patent
`
`Apr. 20, 2004
`
`Sheet 23 0f 33
`
`US 6,725,228 B1
`
`Contains all Folders in Base Layer and Second Layer, plus the following:
`
`<Root>
`
`|--- Correspondents
`l
`|--- Me
`|
`|--- * Automatically created Correspondent folders
`|
`|-—- * User created Correspondent folders
`
`I |
`
`|
`|
`
`--- Bulk Mail
`|--- Unsorted
`|--- * User created Bulk Mail folders
`
`FIG. 19
`
`Page 24 0f 57
`
`Page 24 of 57
`
`
`
`US. Patent
`
`Apr. 20, 2004
`
`Sheet 24 0f 33
`
`US 6,725,228 B1
`
`Includes all Requests and Events in Base Layer and Second Layer, plus the following:
`
`24
`
`29
`
`27
`
`Message Store Sewer
`
`Catalog Server
`
`Message Client
`
`Incoming Reguegs
`
`AddMyAddress—o
`
`ReadFolderAddresses—o
`
`MoveAddress——o
`
`ProcessAddressQueue—o
`
`FIG. 20
`
`Page 25 0f 57
`
`Page 25 of 57
`
`
`
`US. Patent
`
`Apr. 20, 2004
`
`Sheet 25 0f 33
`
`US 6,725,228 B1
`
`Add ressEntry
`
`2 1 7
`AddressArray /\—/
`
`
`AddressRole
`
`
`
`
`
`
`
`
`
`
`
`
`
`FIG . 2 1A
`
`218
`
`_
`Phase 1 Processmg
`____ — — {IHcFer-ngnfi? UdErEsER-élg ; ?£;rs_e;d;r—OE;rFr;n: )_)— _ 1..J
`_ N
`F - - - — — — — - — - - - - — — — - — — — - - - - — - - — 1
`_l
`‘ * ‘ ~ J Increment IF ( AddressRole = arTo )
`I
`' —————————————————————————— — —
`
`FIG. 213
`
`StateCounters
`OriginCount
`ToCount
`
`
`
`ShortcutCount
`
`Page 26 0f 57
`
`Page 26 of 57
`
`
`
`US. Patent
`
`Apr. 20, 2004
`
`Sheet 26 0f 33
`
`US 6,725,228 B1
`
`Phase 1 Processing
`
`:
`: Set to True
`,
`I
`IF
`( Direction = drSend )
`I
`,4 AND ( AddressType = atMyAddress )
`I
`'
`AND ( AddressRole = arFrom )
`l _ _ _ . . _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _J
`
`x
`
`/
`
`,
`
`219
`
`StateFlags
`
`/
`
`:
`: Set to True
`I
`J
`IF
`( Direction = drReceive)
`I
`// : AND ( AddressType = atMyAddress )
`AND ( AddressRole = arTo OR arCc 0R achc )
`l _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ J
`
`
`/
`
`
`
`
`
`
`IsBquMail
`
`ISFromKnowncorresp
`IsToKnownCorresp
`
`‘
`
`\
`
`r — — — — — — — — — — — — — — — — — — — — — - — — _ — — _ 1
`‘\\\ISettoTrue
`I
`:
`IF ( AddressType = atBulkAddress )
`J
`I — _ _ — — _ — ’ ~ _ _ — — _ _ — . _ — — ‘ — — — - _ ——'\
`I
`\
`\\ \ .SettoTrue
`\
`4
`IF
`(AddressType = atCorrespAddress )
`
`:I
`
`I
`
`1I
`
`I __________________________ _ _
`\\ I Set to True
`‘I
`IF
`(AddressType = atCorrespAddress )
`:
`AND ( AddressRole = ( arTo or arCc or achc ) )
`
`FIG. 21C
`
`Page 27 0f 57
`
`Page 27 of 57
`
`
`
`US. Patent
`
`Apr. 20, 2004
`
`Sheet 27 0f 33
`
`US 6,725,228 B1
`
`Input Parameters
`= MessageSummary
`
`Get next element in
`
`MessageSummary's AddressList
`
`
`
`225
`
`Yes
`
`To Phase 2
`
`226
`
`Add Address information to
`AddressEntry
`
`Set StateFIags
`
`FIG. 22
`
`Page 28 0f 57
`
`Page 28 of 57
`
`
`
`US. Patent
`
`Apr. 20, 2004
`
`Sheet 28 0f 33
`
`US 6,725,228 B1
`
`2
`
`From Phase 1
`
`Get next AddressEntrY in
`AddressArray
`
`Create
`Shortcut?
`
`(— 240"
`
`240
`
`Do "AddAddressFolder"
`as shown in FIG. 25A
`
`Yes
`
`Do
`"UpgradePendingCorresp"
`as shown in FIG. 253.
`
`Non—zero
`
`-
`
`-
`
`Do "AddChangeShortcut" as
`shown in FIG. IOB.
`Increment ShortcutCount
`
`-
`
`Add Shortcut to Unsorted Fo|der
`Set IsBulkMail to True
`
`Page 29 0f 57
`
`Page 29 of 57
`
`
`
`US. Patent
`
`Apr. 20, 2004
`
`Sheet 29 0f 33
`
`US 6,725,228 B1
`
`L _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _. _ : IF
`Yes IAND (ToCount = 1 )
`
`FIG. 24B
`
`)
`
`(
`
`Yes».
`
`(FIG. 243)
`
`I
`{1? I EEuI—kfizIIIS/IND ( IsIFoF/IE)‘ ____ — _
`I
`I AND ( IsFromKnownCorresp )
`re
`:AND ( Direction = drReceive)
`I AND ( AddressType = atCorrespAddress)
`I AND ( AddressRoie = ( arSender OR arFrom) )
`L _ _ _ . _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
`
`II
`
`I
`l IF
`( IsBulkMail )AND ( ISFromMe )
`:
`: AND ( IsToKnownCorresp )
`i’
`|AND( Direction = drSend )
`I
`I AND ( AddressType = atCorrespAddress)
`|
`: AND ( AddressRole = ( arTo OR arCc OR achc ) )
`P — _ _ — - _ _ ' — _ _ — — — _ _ — _ _ - ' _ —_1 ,
`: IF
`( IsBquMaii )
`I”
`
`:IF__(Di:ectE)n_=—ar§end_)______ "
`IAND ( AddressType = atMyAddress)
`
`I
`
`( Direction = drSend )
`I AND ( AddressType = atNoAddress )
`IAND ( OriginCount = 1 )
`
`I
`I
`l
`
`,
`I
`:AND ( AddressRole = arTo)
`r . _ — — — _ _ — _ — _ - — u _ _ _ — — _ _ _ — — '\
`
`( Direction = drSend )
`I IF
`: AND ( AddressRole = ( arTo OR arCc OR achc ) )
`
`I_ __ _ _
`'
`
`Yes (FIG. 24B)
`
`( Direction = drReceive ) AND ( IsToMe)
`I IF
`: AND ( AddressType = atMyAddress )
`
`|
`
`‘ \ x \
`
`( Direction = drReceive ) AND ( IsToMe )
`IIF
`: AND ( AddressRole = ( arSender OR arFrom ) )
`r ______________________ _ _
`( Direction = drReceive)
`I IF
`:AND ( NOT IsToMe)
`I AND ( IsFromKnownCorresp )
`I AND ( AddressType = atCorrespAddress)
`:AND ( AddressRole = ( arSender OR arFrom ))
`
`I
`"\ \
`
`I
`I
`P
`I
`I
`
`‘ \
`
`(FIG. 24B)
`
`Yes (FIG. 248)
`
`Page 30 of 57
`
`Page 30 of 57
`
`
`
`US. Patent
`
`Apr. 20, 2004
`
`Sheet 30 0f 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. 243
`
`Page 31 0f 57
`
`Page 31 of 57
`
`
`
`US. Patent
`
`Apr. 20, 2004
`
`Sheet 31 of 33
`
`US 6,725,228 B1
`
`AddAddressFolder
`
`
`
`
`FolderId
`
`
`= 0?
`
`
`
` Input Parameters
`
`= AddressEntry
`No
`
`-
`-
`
`
`
`
`
`
`
`
`
`
`
`
`Build Folder as follows:
`
`
`-- Set FolderName from AddressName, or from
`
`AddressString if AddressName is empty.
`-— Set FolderType to ltCorresp
`-- 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
`database
`Save FolderId to AddressEntry
`Generate FolderAdded Event
`
`Read Folder from
`Catalog database
`
`
`
`
`
`
`
`-
`
`
`Build Address from AddressEntry
`
`Set AddressType based on FolderType
`ftMe
`--> atMyAddress
`fiCorresp --> atCorresp
`ftBulkMail --> atBquMail
`
`
`Add Address to Catalog database
`
`
`FIG. 25A
`
`UpgradePendingCorresp
`
`
` Read Folder from Catalog database
`Set IsPendingCorresp to False
`
`
`Do "UpdateFolder" as shown in FIG.1D.
`
`Read Address from Catalog database
`
`Set isPendingCorresp to False
`
` Input Parameters
`Update Address in Catalog database
`
`= AddressEntry
`
`FIG. 253
`
`Page 32 of 57
`
`Page 32 of 57
`
`
`
`US. Patent
`
`Apr. 20, 2004
`
`Sheet 32 0f 33
`
`US 6,725,228 B1
`
`Input Parameters
`= AddressString
`+ TargetFolderId
`
`TargetFolderId =
`..-,
`..
`FolderId of Unsorted .
`
`Move to
`"Unsorted"?
`
`Delete Address
`
`from Catalog
`database
`
`Update Address in Catalog database
`
`Read Address from
`Catalog database using
`AlternateKeyl
`
`Add AddressString
`to AddressQueue
`
`Address
`Found?
`
`Create Address in Catalog
`data base
`
`Set FolderId in Address to TargetFolderId
`Read TargetFolder from Catalog database
`Set AddressType based on TargetFolder's
`FolderType
`--> atMyAddress
`l’cMe
`ftCorrasp --> atCorresp
`l’CBulkMail --> atBulkMail
`Set IsPendingCorresp in Address from
`TargetFolder
`
`Page 33 0f 57
`
`Page 33 of 57
`
`
`
`US. Patent
`
`Apr. 20, 2004
`
`Sheet 33 0f 33
`
`US 6,725,228 B1
`
`Position to first MessageSummary
`in Catalog database
`
`Get next MessageSummary in
`Catalog database
`
`Does any AddressString in
`the AddressQueue match
`an AddressString in the
`MessageSummary
`AddressList?
`
`database if IsCorresp has changed
`
`Empty
`AddressQueue
`
`-
`
`Process Shortcuts as shown in FIG. IOB
`
`- Update MessageSummary in Catalog
`
`FIG. 27
`
`Page 34 of 57
`
`Page 34 of 57
`
`
`
`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.
`BACKGROUND OF THE INVENTION
`
`Electronic messaging, which includes electronic mail (or
`“e-mail”) messaging, is now an accepted, and some would
`say vital, medium for business and personal communica-
`tions. The rapid growth of electronic messaging is expected
`to continue. This growth brings an increasingly serious
`problem of how to manage the volume of messages. Accord-
`ing to a 1998 Pitney Bowes survey, 71% of respondents said
`they felt overwhelmed by the number of messages they
`receive. This problem is becoming more severe. John
`Dvorak, a frequent writer on the topic of computing states in
`PC Computing magazine that“ .
`.
`. we have poor tools to sort
`and organize (or even find) the e-mail we collect”.
`Electronic messages, which may include attachments of
`diverse kinds, are sent and received through the use of
`messaging software. For example, e-mail messages are sent
`and received by e-mail software such as Microsoft’s OUT-
`LOOKTM or Netscape’s COMMUNICATORTM. Other
`widely used types of electronic messaging are voice mail,
`fax and instant messaging. The vast majority of current
`messaging software is based on design principles that origi-
`nated when message volumes were low. Current e-mail
`software, for example, provides rudimentary features for
`organizing e-mail messages (both incoming and outgoing)
`into various folders. The most basic model saves received
`
`messages in an Inbox folder, messages waiting delivery in an
`Outbox folder, and sent messages in a Sent Messages folder.
`Users can create additional user folders to which they can
`move or copy messages. Refinements to this basic model
`include providing additional system folders such as Drafts
`and Wastebasket folders. In general, the user is responsible
`for moving e-mail messages between folders and for man-
`aging the messages once they have been placed into a folder.
`This can be an onerous responsibility, especially in cases
`where the user receives large volumes of e-mail messages as
`may easily occur, for example, if the user subscribes to one
`or more high volume mailing lists.
`A fundamental weakness of this folder/message model is
`that a message can only exist in a single folder at a time.
`While a user can place copies of e-mail messages into
`multiple folders the user must manage the copies separately.
`If the user wishes to see a message in multiple folders, then
`he or she must make multiple copies of the message, which
`results in using additional storage space and in creating more
`messages that need to be managed. This model also requires
`that the user manually organize each message. This can lead
`to cluttered folders and a general lack of organization in the
`stored e-mail messages that a user accumulates over time.
`
`10
`
`15
`
`20
`
`25
`
`30
`
`35
`
`40
`
`45
`
`50
`
`55
`
`60
`
`65
`
`2
`Further, once an e-mail message has been received it can
`be difficult to find the message later, 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
`time a message is sent or received. The current version of
`Microsoft Outlook has a facility which allows users to create
`such rules, for example. US. Pat. No. 6,057,841, Thurlow et
`al., describes a system for applying a set of electronic
`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 lot of 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 as a series of
`instructions against which each message is evaluated. If the
`number of rules exceeds a relatively small number the
`overall
`rule set becomes very difficult
`to understand.
`Another disadvantage is that rules must be created manually
`and can involve a significant amount of effort if a user wants
`to organize their messages in a thorough manner, such as by
`correspondent. A further disadvantage is that e-mail systems
`which apply filtering rules are typically restricted by the
`folder/message model and cannot organize a message into
`multiple folders without creating multiple copies of the
`message. As a result of the foregoing disadvantages many
`users do not bother to set up such rules. Even when the rules
`have been set up they act only when a message is sent or
`received. Such rules are incapable of managing messages
`after they have been received or sent.
`Other features which software vendors have provided in
`an attempt to help users organize their messages are key-
`words (also referred to as “categories”), tags (also referred
`to as “fiags”), searching tools, and links to other objects such
`as task lists. While these features improve the manageability
`of e-mail they are less powerful than filtering rules and have
`proven inadequate for dealing with higher message volumes.
`Keywords and tags let a user highlight and identify
`messages to distinguish them from other stored messages. A
`major drawback to these mechanisms is that the highlighted
`messages are visible only in the folder to which the message
`belongs. The value of these mechanisms is significantly
`reduced because there is no fast and convenient way to
`locate all tagged messages or a