`
`U8006725228131
`
`(12) Ulllted States Patent
`(1(1) Patent N0.:
`US 6,725,228 B1
`
`Clark et al.
`(45) Date of Patent:
`Apr. 20, 2004
`
`6.167.462 A * 12/2000 Yeager
`(),182,0?l Bl
`*
`172001
`liushimi
`6,226,630 Bl
`"
`5,1200] Billmers
`6,324,569 Bl
`* 111200] Ogilvie et al.
`6396915 Bl
`* M2002 nelfma" 9‘ al‘
`6,424,992) Bl
`"
`772002 Shunian
`.
`.
`_
`6.449.615 Bl
`9721102 Luieial.
`*
`6,466,941 Bl
`* 111/2002 Rowe eial.
`6507.846 Bl
`*
`172nm Consens
`FOREIGN PATENT DOCUMENTS
`
`..
`
`767710
`7071'?
`707.8
`.. TUNED
`
`“ firQO
`'leJr'Zflfi
`f
`707.10
`.. 7077102
`
`7077100
`
`
`
`.
`
`(54) SYSTEM FOR MANAGING AND
`ORGANIZING STORED ELECTRONIC
`MESSAGES
`
`(76)
`
`Inventors: David Morley Clark, 920 Innes Street.
`‘
`.
`._
`,
`.
`..
`Nelson, British Lolumbia VlL 512
`C _Th
`WH‘ C“ _
`a 0
`{ A),
`50"; MP- 3‘ 1
`"mils
`Slglhfégeilcy‘l‘iflsgni gnfi‘hfiiumhla
`I
`.-
`avi
`ite e
`.A;
`Braeewell, 708 Third Street, Nelson,
`British Columbia VlL 2R2 (CA); Jeff
`Toy Tsao Kwnn, 12 Am ndel Avenue,
`Toronto, Ontario M4K 3A4 (CA)
`
`I.
`H,
`
`“[999
`wowfl'm“
`O’ll-IER PUBLICATIONS
`
`( ‘ ) Notice:
`
`Subject to any disclaimer, the term of this Mia050“ Imam“ Explorer 1995300] -*
`paw,“ I5 cxlcndcd 0r adjuslcd undu- 35
`Dvorak, John C., Scat-fer Ilium Sprmr, Jan. 4, 1999, pp. 1—2.
`U.S.C. 154(b) by 212 days.
`De La Cruz el 711., Inside MAP}, @1996, pp. 528-541 (Table
`of Contents also included).
`
`(21) Apply NW 09‘7704’199
`
`Oct. 31, 2000
`
`filed.
`(22)
`Int. Cl.7
`(51)
`(52) U.S. C1.
`(53) Field of Search
`
`MSDN l:ibrary—Apr.-1999, Messaging API(M{31Pl),I.egal
`Information, Developing a Message Store l’rovrder.
`* tiled by examiner
`
`‘
`_
`Pritfmo'flmmifier—Kim Vu,
`ANN?” Emmer—MO'1P13‘S" “mm” 1
`(74) Attorney, Agent, or Prrm—Oyen, Wiggs, Green &
`Mutala
`
`(I061? 7100
`7077102; 70717
`70777, 200. 2,
`707nm
`
`712L360
`
`7071'?
`7'0"?!“if
`
`a
`v
`‘
`1 "
`U'S' IAIENT DOCUMEN r5
`4.611.280 A "
`971986 Linderman
`4_.869_.158 A “
`271089 McCaulcy
`33,274,805 A " 1251993 Iferguson cl all
`{377.354 A x
`'2“??? manneueta"
`3%“??4] A
`83133:? wag“
`{QMJK A
`8” '6 Irwak cl al’
`3,348,789 A
`811996 Nakanura
`5,615,367 A *
`371997 Bennett 1:1 al.
`5.694th A 11 1271967 Johnson CI aL
`5,813,679 A *
`9/1093 Johnson el al.
`5,899,995 A
`511999 Millieretal.
`5.948.058 A *
`9.11999 Kudoh el :11.
`611153.442 A
`12.0999 (Then el al.
`6.92931“ A
`@200“ 'B‘m” 3‘ a"
`R I
`girl?” ‘1 a"
`_.
`., .
`7
`.
`o erl
`6,013,142 A 3‘ W20“) “tiger cl at H
`
`6,088,696 A * TECH) Moon et al.
`
`6,154,740 A * 11/2000 Shah
`
`Tm”
`
`7077102
`11QO
`707nm
`
`70771041
`
`in)?”
`.
`“mam
`'FUWIU
`7071'?
`
`..
`
`Aeomputer~based system catalogs and retrieves 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
`h n_ 1
`l d.‘ 1
`1h
`_
`.
`h.
`I
`1. 1d
`‘
`‘.
`1
`5 D ‘" 5 0
`"’P “Y
`a message 1“ m“ .‘P ‘5 0 “5’ “m” '
`laneously. The system preferably permits messages to'he
`Dreamed by: 1) haSIC Inc-“681:6 and allachmem Pmperllcs.
`eg. date, status. attachment
`type; 2} extended message
`properties that the uSer can specify, cg. keywords; and 3)
`correspondent or bulk mail senderfreeipient, with automatic
`separation of bulk mail from correspondence. Performance
`and usability are improved by performing reads incremen-
`r
`1
`‘
`i
`‘
`.
`,
`tally and by [Moulding multiple sorting keys.
`
`34 Claims, 33 Drawing Sheets
`
`
`
`
`
`
`
`6H-
`
`L
`
`
`Au.»- III- [14]
`\‘nDn m
`Ullmd HI}
`The-HI?!
`I'M Walt
`“Mum
`Ettzanetlr Gm" :21
`Eon BIIHUI {‘J
`Fem-r Emu.
`m MW
`Ul «mm
`X43961" <W -
`1'
`\I
`I
`m“‘...fl91.11: emnrmnlaumutI Know-v a?" ! Mml4] m| die
`.6
`3
`- 69
`Tom?
`6.3—
`
`001
`
`Apple Inc.
`APLlOOS
`
`US. Patent No. 8,724,622
`
`Apple Inc.
`APL1008
`U.S. Patent No. 8,724,622
`
`001
`
`
`
`US. Patent
`
`Apr. 20, 2004
`
`Sheet 1 0f 33
`
`US 6,725,228 B1
`
`
`
`FIG. 1A
`
`002
`
`002
`
`
`
`US. Patent
`
`Apr. 20, 2004
`
`Sheet 2 of 33
`
`US 6,725,228 B1
`
`
`
`FIG. 13
`
`003
`
`003
`
`
`
`US. Patent
`
`Apr. 20,2004
`
`Sheet 3 of 33
`
`US 6,725,228 B1
`
`User Intefiace Davice
`
`Message Client
`
`Outgoing Requests
`
`Message Store
`Server(s)
`
`Incoming Events
`
`FIG. 2
`
`004
`
`004
`
`
`
`US. Patent
`
`Apr. 20,2004
`
`Sheet 4 of 33
`
`US 6,725,228 B1
`
`i E : F
`
`Transport Header
`ReceiveDate: Today 10:10:05
`Din-action: Received
`
`From: Tom Gibson
`To: David Clark
`Cc: David Bracewell
`
`Subject: White paper
`Body:
`Here is the white paper
`for our review.
`y
`ttachment: White Pa
`
`r.doc
`De
`
`Status: IsUnread
`IsActive
`
`Keywords: Marketing
`White Paper
`
`Dal": Today
`l-— This Week
`]-- This Month
`
`Status
`|--- Received
`
`Correspondent
`I--- Torn Gibson
`
`Attachment
`l-- All Attachments
`1--- DOC
`
`Status
`1-— Unread
`|-— Active Mail
`
`Keywords
`|-- Marketing
`|——— White Paper
`
`IG. 3
`
`005
`
`005
`
`
`
`US. Patent
`
`Apr. 20, 2004
`
`Sheet 5 of 33
`
`US 6,725,228 B1
`
`CLIENT COMPUTER
`
`
`
`CLIENT COMPUTER
`
`SERVER COMPUTER
`
`
`
`403
`
`FIG. 4B
`
`SERVER COMPUTER
`
`CLIENT COMPUTER
`
`006
`
`006
`
`
`
`US. Patent
`
`Apr. 20, 2004
`
`Sheet 6 0f 33
`
`US 6,725,228 B1
`
`Addressrd
`
`4 StoreLinkld (FK
`
`Storeld(F aStoreMessageId(FK
`
`dam
`
`f— 54
`Message
`StoreMessageId
`
`Attachment
`4 StoreAttachId
`
`FIG. 5A
`
`007
`
`007
`
`
`
`US. Patent
`
`Apr. 20, 2004
`
`Sheet 7 0f 33
`
`US 6,725,228 B1
`
`
`Catalog I Message Share
`
`
`MessageId
`A Attachld
`
`"I FolderId
`
`
`
`53‘
`
`MtachSummaryr
`52'
`
`
` lil'lessagle.'.iur|'|rlnalm1r
`
`Messageld
`AttachId
`
`
`
`57
`
`
`
`Shortcut
`
`‘
`
`
`
`
`
`Attachment
`
`55'
`
`MessageId
`AttachId
`
`<attachment data>
`
`
`
`FIG. SB
`
`008
`
`008
`
`
`
`US. Patent
`
`Apr. 20, 2004
`
`Sheets of 33
`
`US 6,725,228 B1
`
`60
`
`as
`
`64
`
`65
`
`66
`
`—_- X
`File
`Edit
`View-—
`mmmu we
`
`__
`
`
`
`61
`
`61A
`
`Active Mai!
`To Do (4)
`
`(14)
`
`Unread (1 6)
`Today (12)
`
`Yesterday (6)
`This Week
`
`Elizabeth Green {2)
`
`Bob Baxter (1)
`Forrester Research
`
`FDA <saved search»
`
`U1 ckeyword>
`
`x45 Study <keywom>
`
`—
`
`__
`
`mmmml
`—_
`
`69
`
`623
`
`62"
`
`57
`
`52
`
`FIG. 6
`
`009
`
`009
`
`
`
`US. 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
`
`74
`
`SECOND LAYER ~ Applications of Ughtwelght Message Shortcuts
`
`
`IIOIOIO
`
`
`
`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 filtering mechanisms
`Improved handling of search results
`
`72
`
`BASE LAYER - Base Servicfi
`
`
`IOU-ole.
`
`Catalog database
`Unified View of multiple Message Stores
`Catalog Server Requests and Events
`Lightweight message shortcuts
`Timed Shortcuts
`User created Shertcuts
`User excluded Shortcuts
`Incremental read of Folder contents
`
`FIG. 7
`
`010
`
`010
`
`
`
`US. Patent
`
`Apr. 20,2004
`
`Sheet 10 0f 33
`
`US 6,725,228 B1
`
`are“
`
`
`
`
`
`
`
`
`
`
`
`
`
`56
`Folder
`
`
`Folderld
`
`P
`tFoid Id
`MessageId
`er
`Attach“
`Eoflerfl‘fame
`FolderId
`
`0 er we
`
`
`SORRY
`ISHOt
`.
`A SortColumn
`1
`FolderDateTlme
`_
`.
`
`SortDIrectIon
`FoiderSortColumn
`_
`_
`
`TnggerActJon
`-
`-
`
`FolderSortDIrectIon
`,TnggerDate'fime
`
`
`
`Iwnread
`ShortcutCOtmt
`
`IsCorresp
`UnreadCount
`
`
`CorrespShortcutCount
`I U Short: t
`UnreadCorrespCount
`5 Se
`”
`
`
`
`
`
`
`57
`
`+ Sort
`
`Alt
`
`t K 1
`
`= $1306"
`Key
`AlternateKeyZ
`_
`_
`F TnggerDateTlme
`
`AlternateKeyl
`
`= ParentFolderId
`AlternateKeyZ
`= ParentFolderId
`+ FolderName
`(uppercase)
`
`AltemateKey3
`=15Hot
`
`
`Subject
`
`
`AttachSummarv
`
`AIIad1Type
`AttachName
`AttachSize
`
`MessageSummary
`
`MessageId
`FolderExcludeList
`ISUnread
`
`ISCOWGSD
`MessageDateTime
`DisplayNames
`
`FIG. 8
`
`011
`
`011
`
`
`
`US. Patent
`
`Apr. 20, 2004
`
`Sheet 11 0f 33
`
`US 6,725,228 B1
`
`241
`
`291
`
`27?
`
`Message Store Server
`
`Catalog Sewer
`
`Message Client
`
`min vn
`
`
`e—MessageCha nged
`
`DeleteFoider———a
`
`ReadFolderSubtree—o
`
`e—-—MessageAdded
`
`e—MessageDeleted
`
`ReadFolder——o
`
`
`
`
`
`ReadHotFolders——o
`
`ReadFoIderContents—H
`
`DeleteShortcut—o
`
`DeleteFoIderShortcuts—o
`
`Read MessageSummary—o
`
`ReadAttachSummary—-—e
`
`
`
`WEE—vents
`
`FolderAdded—b
`
`W 4
`
`——-——ReadMessage
`
`
`
`
`FolderCha nged—-—->
`
`FolderHotChanged———>
`
`FolderDeleted——>
`
`ShortcutAdded—-—>
`
`ShortcutDeletedF—D
`
`
`
`
`ShortcutSortKeyChanged—b
`
`SummaryChanged——->
`
`FIG. 9
`
`012
`
`012
`
`
`
`US. Patent
`
`Apr. 20,2004
`
`Sheet 12 of 33
`
`US 6,725,228 B1
`
`ShortcutEntry
`
`Memory structures
`
`
`
`
`
`ShortcutAction
`100 1
`Excluded
`Shomumnay
` OIdShortcut
`
`
`
`[AttachSummary]
`
`Input Parameters
`= MessageSummary
`
`Read all Shortcuts for Message. Save each Shortcut as an OldShortcut
`object in ShortcutArray with ShortcutAction of saDelehe.
`
`Process each ShortcutEntry as shown in FIG. 11A.
`
`Execute Second Layer 2 Automch Organization Rules
`(which usa "AddChangeShortCUE' to create Shortcuts)
`
`Execute Second Layer Filter 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 ShortcutEnlIy to True.
`
`FIG. 103
`
`013
`
`013
`
`
`
`US. Patent
`
`Apr. 20, 2004
`
`Sheet 13 01'33
`
`US 6,725,228 B1
`
`AddChangeShortcut
`
`Input Parameters
`= MessageId
`+ Attachld
`+ Folderld
`+ TriggerAction
`+ TriggerDateTime
`+ IsUserShortcut
`
`Search ShortcutArray for
`matching Shortcut or
`OidShortcut (using
`Messageld + AttachId +
`FolderId as search key)
`
`to saKeep.
`
`Add ShortcutEntry to
`Shortcubfllrray. Set
`ShortcutAction to saAdd.
`
`10
`
`No
`
`Build Shortcut object in ShortcutEntry,
`using info from Input Parameters.
`
`Set ShortcutAction
`
`FIG. 10C
`
`ValidateFolderUstElemen
`
`Read Folder from Catalog
`database
`
`FolderExcludeList
`
`If FolderDateTime in element
`doesn't match value in
`Folder, delete element from
`
`FIG. 100
`
`014
`
`014
`
`
`
`US. Patent
`
`Apr. 20, 2004
`
`Sheet 14 0f33
`
`US 6,725,228 B1
`
`Input Parameters
`= ShoncutEntry
`111
`
`Read Folder from Catalog
`database
`
`Ad
`
`DeleteShorbcut
`
`With OldShOrtcut, do
`"DecrementFolderCounts"
`(FIG. 11B)
`Delete Shartcut from
`Catalog database
`Generate ShomtDeleted
`Event
`
`Do "UpdateFolder" (FIG.
`11B)
`
`UpdateShortcut
`
`Do "BuildShortcut" (FIG. 113)
`If Shortcut is same as OldShortcut, then
`Exit
`With OldShortcut, do
`"DecrernentFolderCounis" (FIG. 11 B)
`With Shortcut, do "IncrementFolderCounts"
`(FIG. 113)
`Update Shortcut in Catalog database
`If the SortKey has changed, generate a
`ShortcutSortKeyChanged Event
`Do "UpdateFolder' (FIG. 113)
`
`Set ShortcutTimer as shown in FIG. 13
`
`1 15
`
`Yes
`
`|
`
`saKeep
`
`No
`
`,
`
`‘m -_ mint" “u
`113)
`.
`mggflzfigfdficouw
`(FIG 113)
`'
`3:33:23?“ to catalog
`Generate ShomcutAdded
`Event
`
`Do "UpdateFolder" (FIG.
`
`FIG. 11A
`
`015
`
`015
`
`
`
`US. Patent
`
`Apr. 20, 2004
`
`Sheet 15 0f 33
`
`US 6,725,228 B1
`
`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 ShortcuthCorresp AND IsUnread, increment UnreadCorrespCount
`
`If ShortcutlsUnread, increment UnreadCount
`If ShortcutlsCorresp, increment CorrespShortcutCount
`
`DecrementFolderCounts
`
`Decrement ShortcutCount
`
`If Shortcut.IsUnread, decrement UnreadCount
`
`If ShortcutJSCorresp, deCrement CorrespShortcutCount If Shortcut.IsCorresp AND IsUnread, decrement UnreadCorrespCount
`
`UpdateFolder
`
`o Update Folder in Catalog database
`- Generate FolderChanged Event
`
`FIG. 11B
`
`016
`
`016
`
`
`
`US. Patent
`
`Apr. 20,2004
`
`Sheet 10 of 33
`
`US 6,725,228 B1
`
`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
`
`MessageId
`Attachld
`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
`
`,
`,
`un'cwes'tr'm
`
`UCWI
`
`UCWZ
`
`UCW3
`
`Unicode Character Weights of
`first 3 characters of string.
`
`,
`,
`MertrIng
`
`C1
`
`C2
`
`C3
`
`C4
`
`c5
`
`c5
`
`Vaiues of first 6 characters of
`string.
`
`DateTime
`
`YY
`
`MM
`
`DD
`
`hh
`
`mm
`
`55
`
`w=Year_1950
`
`Enumeration 0R
`Boolean
`(sdDescending)
`
`Value
`
`YY
`
`MM
`
`DD
`
`hh
`
`W = Year, 1950
`
`533$?“ 0“
`(“Ascending
`
`Value
`
`255
`- YY
`
`255
`- MM
`
`255
`- DD
`
`255 W = Year _ 1950
`- hh
`
`Integer32 0R
`Integer16
`
`_______....-.. Bits ........ ..-
`
`31—24 23-16
`7-0
`
`
`Bits are numbered with 0 being
`the least significant and 31 the
`most significant.
`
`FIG. 12
`
`017
`
`017
`
`
`
`US. Patent
`
`Apr. 20, 2004
`
`Sheet 17 M33
`
`US 6,725,228 B1
`
`Initialize ShortcutTImer
`to inactive state
`
`Read first Shortcut
`from Catalog database
`using Alternatesz
`
`135
`
`Agfigrr‘t‘fie
`
`If TriggerDateTirne is non-zero and is
`less than Shortcut'rimer, reset
`ShortcutTImer to TriggerDateTI me
`
`generate an intemai DeleteShortcut Request.
`
`o
`-
`
`Read Shortcut from Catalog database
`If TriggerAction is taDeleteShortcut then
`
`
`
`FIG. 13
`
`018
`
`018
`
`
`
`US. Patent
`
`Apr. 20, 2004
`
`Sheet 13 of 33
`
`US 6,725,228 B1
`
`140
`
`J
`
`~
`
`J
`
`142
`
`143
`
`“0
`
`Request Parameters
`= FolderId
`+ SortKey
`+ SortDirection
`+ RequestCount
`+ CorrespOnly
`
`¢¥mmmng
`
`Position at last
`Position at first
`“3?”?ng
`Shortcut in Folder
`Shortcut in Folder
`position :1 Shortcut
`Alternatele
`using Alternatele
`using Alternatele
`
`142A
`
`Son
`
`.
`
`'
`sdAscendIng
`
`143A
`
`1438
`
`
`
`Read Nextle Shortcut in Folder
`(depending on SortDirection)
`
`144
`
`145A
`
`Set IsEOF 13::
`True
`
`Yes
`
`End of
`Folder?
`
`No
`
`luded I
`
`Filter?
`_
`Is (Contentmunt > _
`No
`Requesmount) AND
`(Current SortKey NOT =
`Previous SorlKey)?
`
`
`
`
`Read
`Enough?
`
`
`
`149
`
`)
`p0
`(Co
`Is
`rres
`nly = True
`_
`AND (IsGone-sp — False) ?
`
`Yes
`
`Sort ContentArray in
`memory, using valua
`from MessageSummal-y
`
`arid AttachSummarv
`
`BuildRe I I
`
`Read related MessageSummary from Catalog
`
`database
`If AttachId is non-zero, read related
`
`
`
`
`
`
`
`
`
`« AtlachSummary from Catalog database
`
`Add MessageSummary and AttachSurnmary (or
`NULL) to ContentArrav
`Increment ContentCount
`Set SortKey in Reply from the current Shortcut
`SortKev
`
`Reply Parameters
`= Resultcode
`+ 50m
`+ IsEOF
`+ ContentCount
`+ ContentArray
`= Array of [ MessageSummary + {AttachSurnmary 0R NULL) ]
`
`FIG. 14
`
`019
`
`019
`
`
`
`US. Patent
`
`Apr. 20, 2004
`
`Sheet 19 0f 33
`
`US 6,725,228 B1
`
`150
`
`Start
`
`Read Folder from Catalog
`database
`
`152
`
`Request Parameters
`= Folderld
`+ FolderSortColumn
`+ FolderSortDirection
`
`Position at first Shortcut
`in Folder using
`AlternateKeyl
`
`Read next Shortcut in Folder
`
`15
`
`5
`
`Yes
`
`End of
`Folder?
`
`The underlying data type
`for the FolderSortColumn
`
`Enumeration
`OR Boolean
`
`No
`
`, _
`
`Need to build SortKey if
`FolderSortColumn
`NOT = SortColumn
`OR FolderSoztDiI-ection
`NOT = SortDirection
`
`156
`
`157
`
`Need to build
`SortKey if
`FolderSortColumn
`NOT = SortColumn
`
`
`
`If FolderSortColumn is a column in the MessageSummary, road
`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
`
`Set FolderSortCqumn
`Set FolderSortDirection
`Update Folder in Catalog database
`
`FIG. 15
`
`020
`
`020
`
`
`
`US. Patent
`
`Apr. 20, 2004
`
`Sheet 20 0f 33
`
`US 6,725,228 B1
`
`Contains all tables and fields of Base Layer,r plus the following:
`
`SearchCriteria
`
`MessageSummary
`52
`
`
`
`Direction
`
`AttachSummary
`SendState
`
`IsDeleted
`
`
`IsActive
`
`IsKept
`IsTaggecl
`IsToDo
`
`
`
`
`KeywordList
`
`53
`
`FIG. 16
`
`021
`
`021
`
`
`
`US. Patent
`
`Apr. 20, 2004
`
`Sheet 21 of 33
`
`US 6,725,228 B1
`
`Root
`
`|--- Status
`I
`|--- 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
`
`I-- * User created folders
`
`FIG. 17
`
`022
`
`022
`
`
`
`US. Patent
`
`Apr. 20, 2004
`
`Sheet 22 0f 33
`
`US 6,725,228 B1
`
`Contains all tables and fields of Base Layer and Second Lover,r plus the following:
`
`Folder
`
`5’5
`
`57
`
`IsPendingCorresp
`
`
`
`
`58
`
`
`
`MessayeSummary
`
`52 AttachSummaryr
`
`FolderId
`
`
`AddressString
`
`
`AddressType
`
`
`IsPendingCOrresp
`
`
`AddressList
`
`AlternateKeyl
`= AddressString
`(uppercase)
`
`AlternateKeyZ
`= Folderld
`
`FIG. 18
`
`023
`
`023
`
`
`
`US. Patent
`
`Apr. 20, 2004
`
`Sheet 23 0133
`
`US 6,725,228 B1
`
`Contains all Folders In Base Layer and Second Layer, plus the following:
`
`<Root>
`
`|-—- Correspondents
`|
`|--— Me
`|
`|--- * Automatically created Correspondent folders
`I
`|-- * User created Correspondent folders
`
`I |
`
`|
`1
`
`-- Bulk Mail
`|-- Unsorted
`|--- * User created Bulk Mail folders
`
`FIG. 19
`
`024
`
`024
`
`
`
`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 Server
`
`Catalog Server
`
`Message Client
`
`Mom—mam
`
`AddMyAddress——o
`
`ReadFolderAddresses—o
`
`MoveAddress—o
`
`ProcessAddressQueue—a
`
`FIG. 20
`
`025
`
`025
`
`
`
`US. Patent
`
`Apr. 20, 2004
`
`Sheet 25 0f 33
`
`US 6,725,228 B1
`
`217
`,r—m..__/
`
`AddressEntry
`
`AddressArray /
`
`
`
`
`
`
`
`
`
`
`
`FIG. 21A
`
`StateCou nters u
`
`
`ToCount
`
` OriginCount
`
`
`Shortc utCou nt
`
`218
`1
`.... _ # JIFIECFe‘rI'Ie—nEIF UdErEsERBIE 2 {ErinEr—oEErFrEn? )T _ ‘.
`
`Phase 1 Processing
`
`~~~~ “Jinan-lamaAddrEsERBIEEEEEf"—""'"l_|
`
`FIG. 213
`
`026
`
`026
`
`
`
`US. Patent
`
`Apr. 20,2004
`
`Sheet 26 of 33
`
`US 6,725,228 B1
`
`Phase 1 Processing
`
`: Set to True
`|
`IF
`( Direction = drSend )
`/I AND ( AddressType = atMyAddress )
`: AND(AddressRole=arFrom)
`
`xx
`
`:
`I
`:
`J
`
`II
`
`.I
`I
`J
`
`I
`'I
`I
`
`(Direction=drReceive)
`IF
`AND ( AddressType = atMyAddress )
`AND ( AddressROIe = arTo OR arCc 0R achc )
`
`.
`
`‘ ":
`
`J
`1F ( Address-Wm = ataulkAddress )
`______________——__.—..—__________.
`— _ _ H ' ’ _ h ' ' _ _ _ ' " _ _ _ " " — _ ‘ ' _ — _ _
`\ {Set toTrue
`!
`4
`IF
`(AddressType = atCorrespAddress )
`:
`' AND ( AddressRoIe = ( arSender OR arFrom ) )
`
`I
`
`:1
`
`I __________________________ _ _
`X I Set to True
`V
`IF
`(AddressType = atCorrespAddras )
`
`027
`
`IsFrornKnownCorresp
`IsToKnownCorresn
`
`027
`
`
`
`U.S. Patent
`
`Apr. 20,2004
`
`Sheet 27 0f33
`
`US 6,725,228 B1
`
`Input Parameters
`= MessageSummary
`
`Get next element in
`MessageSurnmary's AddressList
`
`225
`
`Yes
`
`To Phase 2
`
`226
`
`
`
`Read Address from Catalog
`database
`
`29
`
`Add Address information to
`AddressEntry
`
`Set StateFlags
`
`FIG. 22
`
`028
`
`028
`
`
`
`US. Patent
`
`Apr. 20, 2004
`
`Sheet 28 0f33
`
`US 6,725,228 B1
`
`
`
`From Phase 1
`
`Get next AddressEntry in
`Add
`Array
`
`362
`
`Yes
`
`
`
`Do "AddAddressFoIder"
`as shown in FIG. 25A
`
`
`
`"UpgradePendingCorresp"
`as show in FIG. 258.
`
`
`
`
`-
`
`
`-
`
`Do "AddChangeShortcut" as
`shown In FIG. lOB.
`Intrernent ShortcutCount
`
`243
`
`243A
`
`
`
`
`
`Zero
`
`-
`-
`
`Add Shortcut to Unsalted Folder
`Set IsBulkMail to True
`
`Non—zero
`
`Set MessageSummary IsCorresp
`to NOT IsBulkMail
`
`
`
`
`FIG. 23
`
`029
`
`029
`
`
`
`US. Patent
`
`Apr. 20,2004
`
`Sheet 29 0f 33
`
`US 6,725,228 B1
`
`I IsBulkMail )
`in:
`: AND I AddressType = atBulkAddress )
`
`I
`I“ a a ‘
`
`:
`I
`L- 5 __
`
`il
`
`( IsBulkMail ) AND I IsToMe}
`{1F
`I AND ( IsFromKnownCorresp )
`: AND ( Direction = drRecaive }
`I AND ( Address‘l’ype : atCorrespAddress )
`I AND ( AddressRoie = ( arSender OR arFrom) )
`
`FIE ' ("IEBquIiai {III—I06 EIEF‘m‘miIEI' """ ‘ '
`: AND ( IsToKnownCorresp)
`IAND ( Direction 2 drSend)
`I AND ( AddressType = atCarrespAddre-ss )
`:AND ( AddressRole = ( arTo 0R arCc OR achc J )
`
`[IF—EIEBEIEJEIITI' """"""""" "1» ’
`
`________ “L_____
`IIF FEBiI'eCtin—garS—eiid)
`IAND ( AddressType = ati‘iyAddress }
`I
`
`L u _ _ _ — _ _ _ _ _ _ _ _ _ g _ _ _ _ h _ _ _ _ : IF
`
`I Direction = drSend)
`I AND ( AddressType : atNoAddrass)
`IAND I OriginCount = 1 )
`
`I
`I
`I
`
`IAND(ToCount=1)
`: AND ( AddressROIe = arTo)
`
`|--"'""
`I
`
`(FIG. 24a
`
`)
`
`Yes (FIG. 243)
`
`{iii—IBIr—ec'uSn'JaEEIEI—I _______ " I
`:AND I AddressRole = I arTo OR art: on achc ) ) r " '
`
`Yes (FIG. 243)
`
`( Direcljon = drReceive ) AND ( IsTaMe )
`I IF
`ll AND ( AddressType = atMyAddress )
`
`I
`
`" - -— h
`
`|
`( Direction = drReceive ) AND ( IsToMe }
`I IF
`I AND ( AddressRoIe = ( arSender 0R arFrom ) ) H a
`l _ . _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _|
`r ______________________ _ _
`
`“'
`
`( Direction = drReaaive J
`IIF
`: AND ( NOT IsToMe)
`I AND ( IsFromKnownComsp )
`IAND ( AddressType = atCorrespAddress )
`:AND ( AddressRoie = ( arSender 0R arFron-I ) J
`
`I
`:
`r.
`II
`
`Yes (FIG. 243)
`
`Yes (FIG. 24B)
`
`030
`
`030
`
`
`
`US. Patent
`
`Apr. 20, 2004
`
`Sheet 30 0f 33
`
`US 6,725,228 B1
`
`[8qu Mail Shortcut]
`Set CreateShortcut to True.
`
`[Confirmed Corresp Shortcut]
`Set IsConfirrnedCorresp 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
`
`
`
`US. Patent
`
`Apr. 20,2004
`
`Sheet 31 0f 33
`
`US 6,725,228 B1
`
`MderessFolder
`
`
`Build Folder as follows:
`
`
`-— Set FolderNarne from AddressName, or from
`
`AddressString if AddressName is empty.
`
`-- Set FolderType to ftCorresp
`
`
`- Set IsPendingCorresp from AddressEntry
` FolderId
`
`
`Try to add Folder to Catalog database
`= 0?
`
`
`
`
`
`If FolderName already exists, generate a unique
`FolderName and then add Folder to Catalog
`Input Parameters
`
`
`database
`
`
`No
`= AddrssEntry
`'
`Save Folderld to AddreSSEntry
`
`
`Generate FolderAdded Event
`
`Read Folder from
`
`Catalog database
`
`
`
`
`
`-
`-
`
`
`
`Build Address from AddressEntry
`-
`
`Set AddressType based on FolderType
`-
`
`ltMe
`--> aMyAddmss
`
`ltCorresp —> atCorresp
`
`
`flBulkMail —> atBquMail
`- Add Address to Catalog database
`
`
`FIG. 25A
`
`UpgradePendingCorresp
`
` Read Folder from Catalog database
`OOOII0
`
`Set IsPendingCorresp to Fa|5e
`
`Do "UpdateFolder" as shown in FIGJD.
`
`Read Address from Catalog database
`
`
`Set isPendingCorresp to False
`
`
`Input Parameters
`Update Address in Catalog database
`
`= AddressEntry
`
`FIG. 253
`
`032
`
`032
`
`
`
`US. Patent
`
`Apr. 20, 2004
`
`Sheet 32 0f33
`
`US 6,725,228 B1
`
`Input Parameters
`= Addressstring
`+ TargetFolderld
`
`TargetFolderId =
`"7
`"
`FolderId of Unsorted _
`
`Delete Address
`from Catalog
`database
`
`Read Address from
`Catalog database using
`AlternateKeyl
`
`Add AddressStrIng
`toAddress ueue
`Q
`
`Create Address in Catalog
`database
`
`Update Address in Catalog database
`
`Set FolderId in Address to TargetFolderId
`Read TargetFolder from Catalog database
`Set Add reasType based on TargetFolder’s
`FolderType
`—> atMyAddress
`Me
`ftCon-esp —> atCorresp
`fiBulkMail -> atBulkMaiI
`Set IsPendingCorresp in Address from
`TargetFolder
`
`O33
`
`033
`
`
`
`US. Patent
`
`Apr. 20, 2004
`
`Sheet 33 0f33
`
`US 6,725,228 B1
`
`Position to first MasageSummary
`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
`Add rasQueue
`
`Procm Shortcuts as shown in FIG. 103
`-
`- Update MessageSummary in Catalog
`
`FIG. 27
`
`034
`
`034
`
`
`
`US 6,725,228 B1
`
`1
`SYSTEM FOR MANAGING AND
`ORGANIZING STORED ELECTRONIC
`MESSAGES
`
`FIELD OIr THE INVENTION
`
`'lhis 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 c—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 COMMUNICATOR”. 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 c~rn ail messages as
`may easily occur, for example, if the user subscribes to one
`or more high volume mailing lists.
`A fundamental weakness of this folderfmessage model is
`that a message can only exist in a single folder at a time.
`While a user can placa: copies of e-mail messages into
`multiple folders the user must manage the copies separately.
`lfthe 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.
`
`in
`
`15
`
`so
`
`35
`
`40
`
`45
`
`50
`
`55
`
`60
`
`65
`
`2
`Further, once an e-mail message has been received it can
`be diflicult 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. U.S. 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
`folderimcssage 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 "flags"), searching tooLs, and links to other objects such
`as task lists. While these features improve the manageability
`ofe-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 all messages that have been
`assigned a given keyword.
`in dealing with large
`tool
`Searching is an important
`message volumes. Traditional sequential search techniques
`are usually too time—consuming to make them very useful
`for larger message stores. As a result, there have been recent
`efforts to provide systems which implement full-text index-
`ing and retrieval capabilities for message stores. While
`searching is an important technique for finding previously
`sent or received messages,
`it is not particularly useful or
`efficient for dealing with messages as they are received and
`then handled by the user. Asearch must he performed each
`time a user wishes to access messages which match a
`particular .set of search criteria. The user is generally forced
`to manually enter the search criteria. Once a search has been
`run the results of the search may be placed into a separate
`"search results" folder {in addition to the folder in which the
`original message resides). Search results folders are not
`
`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 IMAPlContaincr::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
`problems associated with the current folderi’message model.
`These include U.S. Pat. No. 5,948,058, Kudoh et at, 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 for all messages that
`belong to a category—all messages in the message store
`would need to be examined.
`US. Pat. No. 6,029,164, Birrell ct 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 a1. system are that messages are processed
`in batches {for performance reasons) so the index is not
`always current. Further, a user must execute a search to find
`messages associated with the desired label.
`Miller et al, PCT patent publication No. “(099104344
`disclose an e-mail system in which messages can be
`accessed in a correspondent-centric manner. The Miller et at
`system uses a relational database to organize messages. The
`underlaying database structure is conventional in design and
`has a Correspondent table, a Message table and a Message-
`Correspondent Relationship table. While Miller et al. do
`provide a system which addresses some of the problems
`addressed above, Miller et al. do not provid