`
`USlXJ672522831
`
`9
`9
`(12) Ulllted States Patent
`(10) Patent N0.:
`US 6 725 228 B1
`
`Clark ct at.
`(45) Date of Patent:
`Apr. 20, 2004
`
`(54) SYSTEM FOR MANAGING AND
`ORGANIZING STORED ELECTRONIC
`MESSAGES
`
`(76)
`
`Inventors: David Morley Clark, 920 Innes Street.
`Nelson, British Columbia v11. 5'1‘2
`.
`‘
`.
`(CA); Thomas Wilson ‘G‘ilm‘n, 230‘
`Slglhfégeilcy‘l‘lfl-‘Sn, gnfithfiiumhla
`1
`.. ,
`.A;
`avi
`itc e
`Braeewell, 708 Third Street, Nelson,
`British Columbia VlL 2R2 (CAT Jeff
`’
`Toy Tsno Kwnn, 12 Arundel Avenue,
`Toronto, Ontario M4K 3A4 (CA)
`
`.
`lal’
`
`..
`
`
`
`6,1o?,402 A * 12/2000 Yeager
`tome
`6,1821)?” Bl
`*
`[[2001 Feshimi
`7011'?
`6,226,030 Bl
`"
`5,?2001 Billmers
`707.8
`6,324,339 Bl
`* “[200] Ogilwe et al.
`.. TUNED
`
`6’396’33‘3 Bl
`: M2002 1.]elfman 9‘ al.
`” '1?QO
`2%:ng 3: , 333$ :“W‘t‘ml N11322:?)
`.
`_.
`e
`we a.
`.-'
`., "tn-trim
`6,466,941 Bl
`*
`iii/2002 Rowe etal.
`.
`
`6,5018% Bl
`*
`limos Consens
`10mm
`FOREIGN PATENT DOCUMENTS
`W099 [14344
`1 I999
`I
`I
`O’lHER PUBLICATIONS
`
`( ‘ ) Notice:
`
`Subject to any disclaimer, the term of this
`patent
`is extended or adjusted under 35
`u_s_c_ 15403) by 212 days.
`
`(21) Appl. No: 09f704,l99
`(22)
`Filed:
`Oct. 31, 2000
`
`Int. Cl.7
`(51)
`(52) U.S. Ci.
`(53) Field of Search
`
`(I061? 72‘00
`707mm; 707;?
`70m, 200. 2,
`' 707nm
`H
`
`712L300
`
`707:7
`79'?”
`
`a
`.
`1 H
`U'S' IAIENT DOCUMEN I‘b
`4.611.280 A "
`9tl()86 Lindcrnian
`4,8(I9,158 A “
`2’1989 MeCauley
`33,274,895 A " 1251993 Ferguson cl all
`33377354 A x
`'2“??? Scanneuetal‘
`.
`.
`.ewa
`C a.
`ix: 2
`gigs; raga; I!
`J“.
`"
`‘9
`2’3??? 1 ., $39? Effigy: al
`5:694010 A a [$1997 Johnson cl al.
`imam) A *
`911093 Johnson el al.
`5,899,995 A
`511999 Millierelal.
`5,948,058 A *
`991999 Kudoh at at.
`91119.4le A
`131999 (Then at at.
`6.92931“ A
`@200” 'B‘m” 3‘ a"
`2831?: R I Egg; girl?” “ al.
`_.
`., .
`.
`0 en
`6,013,142 A ,,
`{92000 Geiger el al.
`..
`
`6,088,696 A *
`3320(1) Moon et al.
`
`6,154,740 A * 11/2000 Shah
`
`TO?”
`70‘?th2
`709,207
`70mm
`
`70MB“
`
`it”???
`.
`TUTHSUU
`'i'UWlfl
`707;?
`
`..
`
`Microsoft Internet EXPIOTCY 1995300] -*
`Dvorak, John C., Scar-fer Ilium Spam, Jan. 4, 1999, pp. 1—2.
`De La Cruz el al., inside MAP], @1996, pp. 528-541 (Table
`of Contents also included).
`
`MSDN Library—Apr. 1999, Messaging API (MAPl), Legal
`Information, Developing a Message Store Provider.
`
`* cited by examiner
`
`‘
`_
`Pritfmo'flmmiaer—Kim Vu,
`Asst-“m” Em"“”‘-"—M°“P1m" “ammo“
`(74) Attorney, Agent, or Fr'nn—Oyen, Wiggs, Green &
`Mutala
`
`Acomputer~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
`v
`.
`.
`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 lolders Simul-
`laneously. The system preferably permits messages to'he
`Dreamed by: 1) haSIC message and allachmem Properllcs.
`erg. date, status. attachment
`type; 2} extended message
`properties that the user can specify, e.g. 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-
`.
`t
`‘
`.
`,
`.
`.
`tally and by providing multiple sorting keys.
`
`34 Clalms, 33 Drawing Sheets
`
`5‘
`(:5
`W
`
`
`
`\—\
`,
`
`ME-d\
`_
`M_
`and. j to 'Im-n-
`.. _ —. _
`_
`Admin-rte — _—
`_
`1'0le
`
`0‘-
`
`a:
`
`"‘—
`33.3mm -
`1|
`MM‘W - —
`.r
`mu]
`u
`mi
`.r.i-
`woe
`rI
`nix
`“Fifi-on c ”HIE—I 1m IMIE
`L, —3’...
`“or
`,3"
`R
`
`001
`
`Apple Inc.
`APLl 108
`
`US. Patent No. 8,724,622
`
`
`
`YOMIHB]
`MW”!
`EMMHJM'IW
`_
`EnBBllflflf‘J
`FQMHFHIWM —
`
`
`
`_
`
`___
`
`001
`
`Apple Inc.
`APL1108
`U.S. Patent No. 8,724,622
`
`
`
`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 Interface Device
`
`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
`Direction: 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
`'33
`
`Status: IsUnread
`IsActive
`
`Keywords: Marketing
`White Paper
`
`Dali: Today
`l-— This Week
`]-- This Month
`
`Status
`|--- Received
`
`Correspondent
`I--- Torn Gibson
`
`Attachment
`l-- All Attachments
`]-- 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
`
`AddressId
`
`mus-madam»
`
`f— 54
`Message
`StoreMasageId
`
`Attachment
`4 StoreAttachId
`
`f— 55
`
`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
`
`Message-Id
`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
`
`_——-
`File
`Edit
`
`mum-MI
`
`Date
`
`Active Mai!
`To DO (4)
`
`(14)
`
`Unread (1 6)
`
`Today (12)
`
`Yesterday (6)
`This Week
`
`x45 Study <keyword>
`
`Elizabeth Green {2)
`
`Bob Baxter (1)
`Forrester Research
`
`FDA <saved search>
`
`Ui <keyworu>
`
`61
`
`61A
`
`62C
`
`
`
`mmumm-i-I
`15 megs 01'100
`—_
`62A
`
`623
`
`69
`
`57
`
`62
`
`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 3qu 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 Services
`
`
`IOU-ole.
`
`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
`
`
`
`US. Patent
`
`Apr. 20, 2004
`
`Sheet 10 0f 33
`
`US 6,725,228 B1
`
`Folder
`
`ParentFoiderId
`
`
`
`
`
`
`
`
`
`
`
`
`
`AlternateKeyl
`= ParentFolderId
`
`AlternateKeyZ
`= ParentFolderId
`+ FolderName
`
`(uppercase)
`
`AltemateKey3
`= IsHot
`
`56
`
`
`
`
`Messageld
`AttachId
`FolderName
`FolderId
`
`FolderType
`SOrtKey
`
`
`ISHOt
`A SortCol mn
`FolderDateTime
`.1 SortD' :cti
`
`FoiderSortColumn
`T‘
`”Amp“
`FolderSortDirection
`'19?”
`0'1
`TnggerDate'fime
`ShortcutCount
`I U
`d
`UnreadCount
`13cm;
`
`CorrespShortcutCount
`IsUserShortcut
`UnreadCorrespCOunt
`
`
`
`57
`
`AltemateKeyl
`= Folderld
`
`+ SortKey
`
`AlternateKeyZ
`= TfiggerDateTlme
`
`
`
`
`
`
`
`
`AttachSurnmary
`
`AIIad1Type
`AttachName
`AttachSize
`
`MessageSummary
`
`FolderExcludeList
`ISUnread
`
`IsCorresp
`MasageDateTime
`DisplayNames
`Subject
`
`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
`
`o—-—MessageAdded
`
`o—MessageDeleted
`
`min vn
`
`
`o—MessageCha nged
`
`DeleteFoider———a
`
`
`ReadFolderSubtree—o
`
`ReadFolder——o
`
`ReadHotFolders——o
`
`ReadFoIderContents—H
`
`ChangeFolderSortKey—o
`
`AddShortcut—o
`
`DeleteShortcut—o
`
`
`
`
`DeleteFoIderShortcuts—o
`
`
`Read MessageSummary—o
`
`ReadAttachSummary—-—o
`
`W
`
`4——-——ReadMessage
`
`
`
`W
`
`FolderAdded—b
`
`FolderCha nged———->
`
`
`
`FolderHotChanged———>
`
`ShortcutAdded—-—>
`
`FolderDeIeted——>
`
`
`
`
`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
`
`
`
`
`
`ShortcutActlon
`100 1
`Excluded
`ShortcutArray
` OldShortcut
`
`
`
`[AttachSummary]
`
`FIG. 10A
`
`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 Automatic Organization Rules
`(which use "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
`Shortcubflirray. 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
`
`FolderExciudeList
`
`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
`= ShortcutEntry
`111
`
`Read Folder from Catalog
`database
`
`Ad
`
`DeleteShortcut
`
`With OldShortcut, do
`"DecrementFolderCounts"
`(FIG. 11B)
`Delete Shortcut from
`Catalog database
`Generate Shorttheleted
`Event
`
`Do "UpdateFolder" (FIG.
`11B)
`
`UpdateShortcut
`
`Do "BuildShortcut" (FIG. 113)
`If Shortcut is same as OldShortcut, then
`Exit
`With OldShortcut, do
`"DecrernentFolderCounts" (FIG. 11 B)
`With Shortcut, do "IncrementFolderCounts"
`(FIG. 113)
`Update Shortcut in Catalog database
`If the SortKey has changed, generate a
`ShortcutSortKeyChanged Event
`Do "UpdateFoldeH' (FIG. 113)
`
`Set ShortcutTimer as shown in FIG. 13
`
`1 15
`
`Yes
`
`|
`
`saKeep
`
`No
`
`,
`
`t“ -_ ”mt" “u
`113)
`.
`Enigflzfifgfifdifcouw
`(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 SortCqumn (from Folder)
`
`-— Set IsUnread and IsCorresp (from MessageSummary)
`
`IncrementFolderCounts
`
`Increment ShortcutCount
`
`If Shortcut.IsCorresp AND IsUnread, increment UnreadCorrespCount
`
`If ShortcuthUnread, 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
`
`. 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
`TriggerActiol-l
`TriggerDateTime
`Flags
`IsCorresp
`
`Bit
`
`Length Field
`
`0
`1
`2
`
`1
`1
`1
`
`SortDirection
`IsUnread
`IsUserShortcut
`
`FIELD TYPE
`
`SORT KEY FORMAT
`
`Notes
`
`,
`,
`UnlcodeStrlng
`
`UCWI
`
`UCWZ
`
`UCW3
`
`Unicode Character Weights of
`first 3 characters of string.
`
`,
`,
`AI'ISIStI‘Il'Ig
`
`C1
`
`C2
`
`C3
`
`C4
`
`c5
`
`C6
`
`Vaiues of first 6 characters of
`strlng.
`
`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 AlternateKeyZ
`
`135
`
`Agggrrmge
`
`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 18 01'33
`
`US 6,725,228 B1
`
`140
`
`1412A
`
`Sort
`Direction?
`
`sdDescending
`
`Request Parameters
`= FolderId
`+ SortKey
`
`+ SortDirectlon
`
`+ RequestCount
`+ CorreSpOnly
`
`No
`
`sdAscending
`
`143A
`
`1433
`
`Position atfirst
`Ugflmfldgdfls
`Position at last
` using AlternateKeyl
`ey
`
`EV
`position on Shortcut
`AlternateKeyl
`
`Shortcut in Folder
`.
`Alte
`teK 1
`usung
`ma
`
`Shortcut in Folder
`
`Read NexUPrev Shortcut in Folder
`(depending on SortDirection)
`
`144
`
`145A
`
`Set IsEOF b;
`True
`
`End of
`Folder?
`
`No
`
`
`
`No
`
`luded I
`Filter?
`
`
`Is (ContentCount >=
`RequestCount) AND
`
`(Current SortKey NOT =
`Previous SortKey)?
`Read
`
`Enough?
`
`
`
`149
`
`BuildRe -I
`
`Is (CorrespOnly = True)
`AND (IsGorresp = False) ?
`
`Yes
`
`
`Sort ContentArray in
`memory, using value;
`from MessageSummary
`and AttachSummary
`
`
`
`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
`
`
`
`
`
`
`
`
`Read related MessageSummary from Catalog
`
`Reply Parameters
`= ResultCode
`+ 50an
`+ IsEOF
`+ ContentCount
`+ ContentArray
`= Array of [ MessageSummary + {AttachSummary 0R NULL) ]
`
`SortKey
`
`FIG. 14
`
`019
`
`~
`
`'
`
`J
`
`019
`
`
`
`U.S. Patent
`
`Apr. 20,2004
`
`Shect19 0f33
`
`US 6,725,228 B1
`
`150
`
`Read Folder from Catalog
`
`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 undertying data type
`for the FolderSortColumn
`
`Enumeration
`OR Boolean
`
`No
`
`, _
`
`Need to build SortKey if
`FolderSortColumn
`NOT = SortColun'In
`OR FolderSoztDIrectlon
`NOT = SertDIrectIon
`
`156
`
`157
`
`Need to build
`Sort-Key if
`FolderSortCqurnn
`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
`Bulld the SortKey
`Update Shortcut in Catalog database
`
`Set FolderSortCqumn
`Set FolderSortDlrection
`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, 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 0f 33
`
`US 6,725,228 B1
`
`Root
`
`|--- Status
`I
`|--- Active Mail
`|--- Deleted
`|-—- Drafts
`|--- Kept
`|--- Received
`|--- Sent
`|--- Tagged
`|--- To Do
`|--- Unread
`|-—- Waiting Send
`
`| I | | I l l | l l |
`
`I
`|
`|
`|
`|
`
`----Da
`l--- Today
`|--- Yesterday
`|--- This Week
`|--— Last Week
`|--- * Automatically created Month folders
`
`-Attachment
`
`I l
`
`--
`
`|—-— All Attachments
`|--- * Automatically created AttachmentType folders
`
`--
`
`-Keyword
`|-—- * Automatically created Keyword folders
`
`--
`
`-Search Results
`
`|--- * Search Results folders
`
`| | | l
`
`l | l
`
`l l l
`
`l l
`
`--
`
`- 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 Layer, plus the following:
`
`Folder
`
`5’5
`
`57
`
`IsPendingCorresp
`
`
`
`
`58
`
`
`
`MessageSummary
`
`52 AttachSummaryr
`
`FolderId
`
`
`AddressString
`
`
`AddressType
`
`
`IsPendingCorresp
`
`
`AddressList
`
`AlternateKeyl
`= AddressString
`(uppercase)
`
`AlternateKeyZ
`= Folderld
`
`FIG. 18
`
`023
`
`023
`
`
`
`US. Patent
`
`Apr. 20, 2004
`
`Sheet 23 M33
`
`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 of 33
`
`US 6,725,228 B1
`
`217
`,—..__.__j
`
`AddressEntry
`
`AddressArray /
`
`
`
`
`
`
`
`
`
`
`
`
`
`FIG. 21A
`
`StateCou nters _.
`
`
`ToCount
`
` OriginCount
`
`
`Shortc utCou nt
`
`218
`j
`
`Phase 1 Processing
`_____________________________ 1
`...... 4| Increment IF ( AddressRole = ( arSender OR arFrom ) )
`|
`————————————————————————————— I
`_|
`~~~~~ 4' Increment IF ( AddressRole = arTo )
`|
`
`FIG. 213
`
`026
`
`026
`
`
`
`US. Patent
`
`Apr. 20,2004
`
`Sheet 26 of 33
`
`US 6,725,228 B1
`
`Phase 1 Procasing
`
`:
`: Set to True
`I
`I
`IF
`( Direction = drSend )
`I
`/I AND ( AddressType = atMyAddress )
`I
`' AND ( Address-Role = arFrom)
`l ____________________________ J
`
`'EeTtIO'TFuE‘"
`I
`IF
`( Direction = drReceive)
`’1 AND(AddressType ; atMyAddress )
`I
`AND ( AddressRoae = arTo OR arCc 0R achc )
`
`I__________________________
`
`l
`I
`|
`J'
`
`J
`
`I
`
`:1
`
`IsFrornKnownCorresp
`IsToKnownCorresp
`
`":
`
`1F ( AddressType = atBulkAddrass )
`
`I ____________________________
`X I SettoTrue
`V
`IF
`(AddressType = atCorrespAddras )
`
`027
`
`027
`
`
`
`U.S. Patent
`
`Apr. 20,2004
`
`Sheet 27 0f33
`
`US 6,725,228 B1
`
`Input Parameters
`= MessageSummary
`
`
`
`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 shown in FIG. 258.
`
`
`
`
`-
`
`
`-
`
`Do "AddChangeShortcut" as
`shown In FIG. lOB.
`Increment ShortcutCount
`
`243
`
`243A
`
`
`
`
`
`Zero
`
`-
`-
`
`Add Shortcut to Unsorted 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
`
`( IsBulkMail )
`IIF
`I AND ( AddressType = atBulkAddras )
`
`I
`I“ ., 2 ,_
`
`I ' IF
`
`:
`I
`1- 2 H
`
`il
`
`( IsBulkMail ) AND ( IsToMe}
`{1F
`I AND ( IsFromKnownCorresp )
`: AND ( Direction—_ drReceive }
`I AND ( Address‘l’ype.. atCorrespAddre-ss )
`I AND ( AddressRoie = ( arSender OR arFrom) )
`
`( IsBquMail )AND { IsFromMe )
`I 1F
`' AND ( IsToKnownCorresp)
`:AND ( Direction~ drSend )
`I AND ( AddressType = atCarrespAddre-ss )
`IAND ( AddressRole= (arTo 0R arCc OR achc J )—l
`————————————————————————— 1
`________________________ _l
`l IF
`( ISBulkMail )
`i’
`
`a
`
`:IFHIBEeHcIirI:ErS_eiId—)____________ L____
`IAND ( AddressType = ath‘lyAddress }
`
`( Direction = drSend)
`IAND ( AddrssType : atNoAddrass)
`IAND ( OriginCount-— 1 )
`IAND ( AddressRoie-— arFrom }
`
`IIF ( Direction-— drSend )
`iAND ( ToCount-— 1 )
`I AND ( AddressRoie= arTo)
`
`i
`|
`'
`:
`
`'
`Idddd
`|
`
`(FIG. 248)
`
`we... (FIG. 243)
`
`Yes...
`
`(FIG. 24B)
`
`“25.. (FIG. 243)
`
`Yes. (FIG. 248)
`
`I
`( Direcijon—- drSend )
`irIF
`:AND ( AddressRole = ( arTo OR art: on achc ) ) I"
`
`( Direcljon = drReceive ) AND ( IsTaMe )
`I IF
`ll AND ( AddressType = atMyAddras )
`
`I
`
`" - -— ..
`
`|
`( Direction = drReceive ) AND ( IsToMe I
`I IF
`I AND ( AddressRole = ( arSender 0R arFrom ) ) H I.
`l_-______________________J
`
`‘
`
`( Direction = drReceive J
`IIF
`'AND ( NOT IsToMe)
`IAND ( IsFromKnownComsp )
`iAND ( AddressType-~ atCorrospAddress )
`IAND ( AddressRoie—- (arSender 0R arFron-i ) J
`
`|
`I
`:2
`il
`J
`
`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
`
`AddAddressFolder
`
`
`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
`-
`
`table
`--> aMyAddmss
`
`l’cCorresp —> atCorresp
`
`
`l’cBulkMail —> atBquMail
`- Add Address to Catalog database
`
`
`FIG. 25A
`
`UpgradePendingCorresp
`
` Read Folder from Catalog database
`OOOII0
`
`Set IsPendingCorresp to False
`
`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
`= AddressStl-ing
`+ 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 TargetFolderld
`Read TargetFolder from Catalog database
`Set Add recsType based on TargetFolder’s
`FolderType
`—> atMyAddress
`Me
`ftCorresp —> atCorresp
`fiBulkMail -> atBulkMaiI
`Set IsPendingCorresp in Address from
`TargetFolder
`
`033
`
`033
`
`
`
`US. Patent
`
`Apr. 20, 2004
`
`Sheet 33 0f33
`
`US 6,725,228 B1
`
`Position to first Message-Summary
`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 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-
`implemcntcd 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 INVEN'I'ION
`
`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 Netscapc’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 em 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 place 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.
`
`ll]
`
`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 ineflicient 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 lirrte 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
`folderimessage 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
`ofc-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 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 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 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 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 provide a general
`solution to the problem of organizing a store of electronic
`messages. Some shortcomings of the Miller et a]. system are
`as follows:
`
`a separate set of tables is required for each f