Retrospective changing of previously sent messages

Information

  • Patent Grant
  • 9477947
  • Patent Number
    9,477,947
  • Date Filed
    Monday, August 24, 2009
    15 years ago
  • Date Issued
    Tuesday, October 25, 2016
    8 years ago
Abstract
Functionality can be implemented in email applications to allow sent messages to be updated, even if the sent messages have been read. When a request to update a sent message is received, a message update unit can update information in the message according to the notification. The message update unit can notify a recipient that the message was updated, and can indicate changed information in the sent message. The message update unit can also determine if the sent message has been forwarded, and forward the update notification to other recipients.
Description
BACKGROUND

Embodiments of the inventive subject matter generally relate to the field of electronic communications, and, more particularly, to retrospective changing of previously sent messages.


Mistakes, such as forgetting to attach files, making typos, and clicking send too soon, are common in electronic messages. Senders usually discover their mistakes after messages have already been sent. Some email applications (e.g., IBM® Lotus Notes, Microsoft® Office, etc.) allow sent messages to be recalled if the messages have not been read. Recalled messages are deleted from recipients' inboxes. Senders have to send additional messages to correct mistakes. If a message cannot be recalled, a recipient will have two versions of the message in their inbox.


SUMMARY

Embodiments include a method directed to receiving a request to update a previously sent message. If the previously sent message can be updated, changes to be applied to the previously sent message can be determined based on the request. In some embodiments, the previously sent message can be updated based on the changes. A recipient can be notified that the previously sent message has been updated. If the previously sent message has been forwarded to a second recipient, the request can be forwarded to the second recipient.





BRIEF DESCRIPTION OF THE DRAWINGS

The present embodiments may be better understood, and numerous objects, features, and advantages made apparent to those skilled in the art by referencing the accompanying drawings.



FIG. 1 is an example conceptual diagram of sending an update notification for a previously sent email.



FIG. 2 depicts a flowchart of example operations for sending an update notification for a previously sent email.



FIG. 3 is an example conceptual diagram of updating an already sent email.



FIGS. 4 and 5 depict a flowchart of example operations for updating a previously sent email.



FIG. 6 depicts an example computer system.





DESCRIPTION OF EMBODIMENT(S)

The description that follows includes exemplary systems, methods, techniques, instruction sequences, and computer program products that embody techniques of the present inventive subject matter. However, it is understood that the described embodiments may be practiced without these specific details. For instance, although examples refer to email, embodiments can be implemented in instant messaging, social networking, etc. In other instances, well-known instruction instances, protocols, structures, and techniques have not been shown in detail in order not to obfuscate the description.


Having multiple versions of a message in a recipient's inbox may lead to confusion. For example, the recipient received an email about a meeting that specifies an incorrect date. After the recipient read the email, the recipient received another email correcting the date. If the recipient does not delete the incorrect email, the recipient may accidentally use the incorrect email to reference the date and attend the meeting on the wrong day. Functionality can be implemented in email applications to allow sent messages to be updated, even if the sent messages have been read. When a request to update a sent message is received, a message update unit can update information in the message according to the notification. The message update unit can notify a recipient that the message was updated, and can indicate changed information in the sent message. The message update unit can also determine if the sent message has been forwarded, and forward the update notification to other recipients.



FIG. 1 is an example conceptual diagram of sending an update notification for a previously sent email. A previously sent email message 104 is displayed in an edit message window 103 of an email application. An update button 106 is available in a toolbar 105 of the edit message window 103. The previously sent email message 104 comprises a header 109 and a body 107. FIG. 1 shows dataflow and operations occurring in stages A-D.


At stage A, a message update unit 101 detects a request to update the previously sent email message 104. In this example, the message update unit 101 detects a click on the update button 106. The message update unit 101 may be integrated in the email application, a standalone application running on a server, etc.


At stage B, the message update unit 101 determines changes made to the previously sent email 104. In this example, the message update unit 101 determines that text 111 representing a time has been changed in the previously sent email 104.


At stage C, the message update unit 101 determines a recipient of the previously sent email based on the header 109. In this example, the recipient is Fred, fred@company.com.


At stage D, the message update unit 101 sends an update request indicating the changes to the recipient via the email server 113. In this example, the text 111 was changed from “1:00” to “2:30.” The update request can include the entire previously sent email 104 with indications of the changes. For example, the update request includes the email body 107 with the changes to text 111 indicated by tags. The update request may not include the entire email text. For example, the update request includes a snippet of original text, changes made to the snippet, and a location of the text. In addition, the update request can include an identifier of the previously sent message, and a date stamp, etc.



FIG. 2 depicts a flowchart of example operations for sending an update notification for a previously sent email. Flow begins at block 201, where a message update unit determines that a previously sent message has been changed. Examples of previously sent messages include emails, instant messages, social networking posts, etc. Flow continues at block 202.


At block 202, the message update unit determines changes made to the previously sent message. For example, the message update unit determines that an attachment has been added to the previously sent message. As another example, the message update unit determines that priority of the previously sent message has been changed. Changes may be determined based on comparing an original version of the previously sent email with a changed version of the previously sent email. Policies may govern changes that can be made to a previously sent message. The policies may be based on sender preferences, recipient preferences, company policies, etc. For example, policies may allow format changes to a body of a previously sent email but may restrict changes text. As another example, a policy may allow changes to body text and a subject, but not allow addition or removal of recipients. Flow continues at block 203.


At block 203, the message update unit determines recipients of the previously sent message. The message update unit can determine the recipients based on the previously sent message's header. Flow continues at block 204.


At block 204, the message update unit sends an update request to the recipients and flow ends. The update request can be sent to the recipients via a mail server.



FIG. 3 is an example conceptual diagram of updating an already sent email. A previously sent email message 305 is displayed in an email inbox 303. The previously sent email message 305 comprises a header 307 and a body 308. An indication 309 that the previously sent email was forwarded is displayed above the previously sent email 305. FIG. 3 shows dataflow and operations occurring in stages A-F.


At stage A, a message update unit 301 receives an update message for the previously sent email 305 from a mail server 313. The update message can be matched to the previously sent email 305 based on an identifier in the update message.


At stage B, the message update unit 301 determines that the previously sent email has been read. For example, the message update unit 301 determines that the previously sent email's status is “opened.”


At stage C, the message update unit 301 updates the previously sent email based on changes indicated in the update request. In this example, the message update unit 301 changes text 311 to “2:30” from “1:00” in the body 308. Updates may be applied to previously sent emails based on policies. For example, a policy does not allow updates to previously sent messages unless an update request was sent within 30 minutes of a previously sent email. Policies may indicate which parts (e.g., subject, body, attachments, etc.) of previously sent messages may be updated.


At stage D, the message update unit 301 records an update timestamp in the header 307 and notifies a recipient of the update. For example, the message update unit highlights the previously sent email 305 in the recipient's inbox to notify the recipient that an update was received for the previously sent email 305. As another example, the message update unit 301 notifies the recipient of the update by displaying a pop-up dialog box.


At stage E, the message update unit 301 determines that the previously sent email 305 was forwarded to additional recipients. In this example, the previously sent email 305 was forwarded to jane@company.com. The message update unit 301 can determine that the previously sent email 305 was forwarded based on an indication stored on the recipient's computer. For example, the message update unit examines the previously sent email's 305 metadata to determine if the message was forwarded. The message update unit 301 can determine that the previously sent email 305 was forwarded based on an indication stored on a mail server. For example, the message update unit 301 accesses information indicating additional recipients stored in a database based on an identifier of the previously sent message.


At stage F, the message update unit 301 forwards the update message to the additional recipients via the mail server 313.



FIGS. 4 and 5 depict a flowchart of example operations for updating a previously sent email. Flow begins at block 401, where a message update unit receives an update request for a previously sent message. Flow continues at block 402.


At block 402, the message update unit determines changes to the previously sent message based on the update request. For example, the message update unit determines the changes based on tagged text in the update request. Flow continues at block 403.


At block 403, the message update unit determines if the previously sent message has been read. For example, the message update unit determines if the previously sent message was opened. If the previously sent message has been read, flow continues at block 404. If the previously sent message has not been read, flow continues at block 405.


At block 404, the message update unit updates the previously sent email based on the changes and flow ends. The update can be applied to the previously sent email based on preferences. For example, preferences indication that updates should be transparent so that the recipient does not know that the update has occurred. As another example, preferences indicated that changes made to the previously sent email should be marked.


At block 405, the message update unit determines if the message should be updated. The message update unit can determine if the message should be updated based on policies. For example, a policy indicates that changes should be automatically allowed if previously sent message's sender is a superior of the recipient. As another example, a policy indicates that a recipient should be prompted to accept or reject the changes if a recipient is an employee of a sender. If the message should not be updated, flow continues at block 406. If the message should be updated, flow continues at block 407.


At block 406, the message update unit displays the update request as a new message in a recipient's inbox and flow ends. The update request can be displayed as a new message if the recipient's email application does not support updates of previously sent messages.


At block 407, the message update unit updates the previously sent message based on the changes. For example, the message update unit adds an attachment to the previously sent message. Flow continues at block 408.


At block 408, the message update unit displays indications of the changes in the previously sent message. For example, removed text is indicated by a strikethrough and added text may is underlined and color-coded. A recipient may wish to accept the changes to make text more readable. If a recipient accepts the changes, the indications may be removed. Flow continues at block 409.


At block 409, the message update unit notifies a recipient that the previously sent message has been updated. For example, the message update unit moves the previously sent email to the top of the recipient's inbox based on a timestamp in the update request. Flow continues at block 501 of FIG. 5.


In some embodiments, the message unit can receive a second request to update a second previously sent message. The message update unit can determine that the second previously sent message cannot be updated; and display the second request as a new message in an inbox of the recipient.



FIG. 5 depicts a flowchart of example operations for updating a previously sent email. Flow continues at block 501 from block 409 of FIG. 4, where the message update unit determines if the message was forwarded. For example, the message update unit determines that the message was updated based on an indication stored on a mail server. If the message was forwarded, flow continues at block 502. If the message was not forwarded, flow ends.


At block 502, the message update unit determines a second recipient of the previously sent message. For example, the message update unit determines the second recipient based on metadata indicating the second recipient's email. Flow continues at block 503.


At block 503, the message update unit forwards the update request to the second recipient and flow ends. The message update unit can notify the previously sent message's sender of the forward. The sender can specify whether the update request should be forwarded. The message update unit can also ask the sender if the update should be forwarded before forwarding the update.


Embodiments may take the form of an entirely hardware embodiment, a software embodiment (including firmware, resident software, micro-code, etc.) or an embodiment combining software and hardware aspects that may all generally be referred to herein as a “circuit,” “module” or “system.” Furthermore, embodiments of the inventive subject matter may take the form of a computer program product embodied in any tangible medium of expression having computer usable program code embodied in the medium. The described embodiments may be provided as a computer program product, or software, that may include a machine-readable medium having stored thereon instructions, which may be used to program a computer system (or other electronic device(s)) to perform a process according to embodiments, whether presently described or not, since every conceivable variation is not enumerated herein. A machine-readable medium includes any mechanism for storing or transmitting information in a form (e.g., software, processing application) readable by a machine (e.g., a computer). The machine-readable medium may include, but is not limited to, magnetic storage medium (e.g., floppy diskette); optical storage medium (e.g., CD-ROM); magneto-optical storage medium; read only memory (ROM); random access memory (RAM); erasable programmable memory (e.g., EPROM and EEPROM); flash memory; or other types of medium suitable for storing electronic instructions. In addition, embodiments may be embodied in an electrical, optical, acoustical or other form of propagated signal (e.g., carrier waves, infrared signals, digital signals, etc.), or wireline, wireless, or other communications medium.


Computer program code for carrying out operations of the embodiments may be written in any combination of one or more programming languages, including an object oriented programming language such as Java, Smalltalk, C++ or the like and conventional procedural programming languages, such as the “C” programming language or similar programming languages. The program code may execute entirely on a user's computer, partly on the user's computer, as a stand-alone software package, partly on the user's computer and partly on a remote computer or entirely on the remote computer or server. In the latter scenario, the remote computer may be connected to the user's computer through any type of network, including a local area network (LAN), a personal area network (PAN), or a wide area network (WAN), or the connection may be made to an external computer (for example, through the Internet using an Internet Service Provider).



FIG. 6 depicts an example computer system. A computer system includes a processor unit 601 (possibly including multiple processors, multiple cores, multiple nodes, and/or implementing multi-threading, etc.). The computer system includes memory 607. The memory 607 may be system memory (e.g., one or more of cache, SRAM, DRAM, zero capacitor RAM, Twin Transistor RAM, eDRAM, EDO RAM, DDR RAM, EEPROM, NRAM, RRAM, SONOS, PRAM, etc.) or any one or more of the above already described possible realizations of machine-readable media. The computer system also includes a bus 603 (e.g., PCI, ISA, PCI-Express, HyperTransport®, InfiniBand®, NuBus, etc.), a network interface 605 (e.g., an ATM interface, an Ethernet interface, a Frame Relay interface, SONET interface, wireless interface, etc.), and a storage device(s) 609 (e.g., optical storage, magnetic storage, etc.). The computer system also includes a message update unit 621. The message update unit updates previously sent messages based on changes indicated in an update request, notifies a recipient that the previously sent message has been updated, and displays indications of the changes. The message update unit 621 also determines if the previously sent message was forwarded to additional recipients and forwards the update request to the additional recipients. Any one of these functionalities may be partially (or entirely) implemented in hardware and/or on the processing unit 601. For example, the functionality may be implemented with an application specific integrated circuit, in logic implemented in the processing unit 601, in a co-processor on a peripheral device or card, etc. Further, realizations may include fewer or additional components not illustrated in FIG. 6 (e.g., video cards, audio cards, additional network interfaces, peripheral devices, etc.). The processor unit 601, the storage device(s) 609, and the network interface 605 are coupled to the bus 603. Although illustrated as being coupled to the bus 603, the memory 607 may be coupled to the processor unit 601.


While the embodiments are described with reference to various implementations and exploitations, it will be understood that these embodiments are illustrative and that the scope of the inventive subject matter is not limited to them. In general, techniques for retrospective change of previously sent messages as described herein may be implemented with facilities consistent with any hardware system or hardware systems. Many variations, modifications, additions, and improvements are possible.


Plural instances may be provided for components, operations, or structures described herein as a single instance. Finally, boundaries between various components, operations, and data stores are somewhat arbitrary, and particular operations are illustrated in the context of specific illustrative configurations. Other allocations of functionality are envisioned and may fall within the scope of the inventive subject matter. In general, structures and functionality presented as separate components in the exemplary configurations may be implemented as a combined structure or component. Similarly, structures and functionality presented as a single component may be implemented as separate components. These and other variations, modifications, additions, and improvements may fall within the scope of the inventive subject matter.

Claims
  • 1. A method comprising: receiving a request to update a previously sent message;determining changes to be applied to the previously sent message based on the request;updating the previously sent message based on the changes;notifying a recipient that the previously sent message has been updated;determining that the previously sent message has been forwarded to a second recipient; andforwarding the request to the second recipient.
  • 2. The method of claim 1, further comprising determining the previously sent message based on an identifier in the request responsive to said receiving the request to update the previously sent message.
  • 3. The method of claim 1, wherein said determining that the previously sent message can be updated is based on, at least one of, policies and input from the recipient, wherein the policies govern changes allowed to the sent message, wherein the policies comprise, at least one of, restrictions to changes to message text and a subject, and restrictions on adding and removing recipients.
  • 4. The method of claim 1, wherein said notifying the recipient that the previously sent message has been updated comprises: determining that the previously sent message was opened; andmoving the previously sent message to an inbox position based, at least in part, on a timestamp of the request instead of a timestamp of the previously sent message.
  • 5. The method of claim 1 further comprising: receiving a second request to update a second previously sent message;determining that the second previously sent message cannot be updated; anddisplaying the second request as a new message in an inbox of the recipient.
  • 6. The method of claim 1 further comprising: determining that changes were made to a second previously sent message;determining recipients of the second previously sent message; andsending, to the recipients, a second request to update the previously sent message based on the changes made to the second previously sent message.
  • 7. An apparatus comprising: a processing unit;a network interface; anda message update unit operable to, receive a request to update a previously sent message;determine changes to be applied to the previously sent message based on the request;update the previously sent message based on the changes;notify a recipient that the previously sent message has been updated;determine that the previously sent message has been forwarded to a second recipient; andforward the request to the second recipient.
  • 8. The apparatus of claim 7, wherein the message update unit being operable to determine that the previously sent message can be updated is based on, at least one of, policies and input from the recipient, wherein the policies govern changes allowed to the sent message wherein the policies comprise, at least one of, restrictions to changes to message text and a subject, and restrictions on adding and removing recipients.
  • 9. The method of claim 8, wherein said determining that changes were made to the second previously sent message comprises comparing the second previously sent message with an original copy of the second previously sent message.
  • 10. The apparatus of claim 7, wherein the message update unit being operable to notify the recipient that the previously sent message has been updated comprises the message update unit being operable to: determine that the previously sent message was opened; andmove the previously sent message to an inbox position based, at least in part, on a timestamp of the request instead of a timestamp of the previously sent message.
  • 11. The apparatus of claim 7 comprises the message update unit being further operable to: receive a second request to update a second previously sent message;determine that the second previously sent message cannot be updated; anddisplay the second request as a new message in an inbox of the recipient.
  • 12. The apparatus of claim 7 comprises the message update unit being further operable to: determine that changes were made to a second previously sent message;determine recipients of the second previously sent message; andsend, to the recipients, a second request to update the previously sent message based on the changes made to the second previously sent message.
  • 13. The apparatus of claim 12, wherein the message update unit being operable to determine that changes were made to the second previously sent message comprises the message update unit being operable to compare the second previously sent message with an original copy of the second previously sent message.
US Referenced Citations (124)
Number Name Date Kind
4887292 Barrett et al. Dec 1989 A
4914732 Henderson et al. Apr 1990 A
4916443 Barrett et al. Apr 1990 A
4947163 Henderson et al. Aug 1990 A
5220604 Gasser et al. Jun 1993 A
5247575 Sprague et al. Sep 1993 A
5262942 Earle Nov 1993 A
5305197 Axler et al. Apr 1994 A
5625692 Herzberg et al. Apr 1997 A
5710814 Klemba et al. Jan 1998 A
5745574 Muftic Apr 1998 A
5819238 Fernholz Oct 1998 A
5870548 Nielsen Feb 1999 A
5963642 Goldstein Oct 1999 A
5966351 Carleton et al. Oct 1999 A
6028938 Malkin et al. Feb 2000 A
6055413 Morse et al. Apr 2000 A
6078990 Frazier Jun 2000 A
6081508 West et al. Jun 2000 A
6081899 Byrd Jun 2000 A
6105122 Muller et al. Aug 2000 A
6148349 Chow et al. Nov 2000 A
6178504 Fieres et al. Jan 2001 B1
6185612 Jensen et al. Feb 2001 B1
6189045 O'Shea et al. Feb 2001 B1
6195751 Caronni et al. Feb 2001 B1
6212636 Boyle et al. Apr 2001 B1
6226743 Naor et al. May 2001 B1
6247077 Muller et al. Jun 2001 B1
6256740 Muller et al. Jul 2001 B1
6275934 Novicov et al. Aug 2001 B1
6324571 Hacherl Nov 2001 B1
6363478 Lambert et al. Mar 2002 B1
6372974 Gross et al. Apr 2002 B1
6378912 Condon et al. Apr 2002 B1
6401239 Miron Jun 2002 B1
6418413 DeMarcken et al. Jul 2002 B2
6457053 Satagopan et al. Sep 2002 B1
6490614 Shaffer et al. Dec 2002 B1
6526273 Link, II et al. Feb 2003 B1
6538996 West et al. Mar 2003 B1
6539480 Drews Mar 2003 B1
6594698 Chow et al. Jul 2003 B1
6598167 Devine et al. Jul 2003 B2
6606708 Devine et al. Aug 2003 B1
6615258 Barry et al. Sep 2003 B1
6640230 Alexander et al. Oct 2003 B1
6643289 Natanson et al. Nov 2003 B1
6690659 Ahmed et al. Feb 2004 B1
6711632 Chow et al. Mar 2004 B1
6714778 Nykanen et al. Mar 2004 B2
6735202 Ahmed et al. May 2004 B1
6754696 Kamath et al. Jun 2004 B1
6765896 Ahmed et al. Jul 2004 B1
6769000 Akhtar et al. Jul 2004 B1
6784786 Sumner Aug 2004 B1
6816900 Vogel et al. Nov 2004 B1
6822553 Henderson et al. Nov 2004 B1
6823454 Hind et al. Nov 2004 B1
6826690 Hind et al. Nov 2004 B1
6839841 Medvinsky et al. Jan 2005 B1
6856812 Budka et al. Feb 2005 B1
6925562 Gulcu et al. Aug 2005 B2
6968571 Devine et al. Nov 2005 B2
6986038 Leah et al. Jan 2006 B1
6986039 Leah et al. Jan 2006 B1
7016666 Lauper et al. Mar 2006 B2
7079499 Akhtar et al. Jul 2006 B1
7089428 Farley et al. Aug 2006 B2
7096498 Judge Aug 2006 B2
7114083 Devine et al. Sep 2006 B2
7114180 DeCaprio Sep 2006 B1
7123900 Brown et al. Oct 2006 B2
7124289 Suorsa Oct 2006 B1
7127328 Ransom Oct 2006 B2
7131123 Suorsa et al. Oct 2006 B2
7143165 Vogel et al. Nov 2006 B2
7152049 Ryan, Jr. Dec 2006 B2
7152109 Suorsa et al. Dec 2006 B2
7162512 Amit et al. Jan 2007 B1
7171202 Chen et al. Jan 2007 B2
7188003 Ransom et al. Mar 2007 B2
7191939 Beck et al. Mar 2007 B2
7203753 Yeager et al. Apr 2007 B2
7203908 Nakajima et al. Apr 2007 B1
7213047 Yeager et al. May 2007 B2
7216085 Wertheimer et al. May 2007 B1
7222187 Yeager et al. May 2007 B2
7225249 Barry et al. May 2007 B1
7249373 Shewchuk et al. Jul 2007 B2
7263607 Ingerman et al. Aug 2007 B2
7272662 Chesnais et al. Sep 2007 B2
7272782 Sneh Sep 2007 B2
7275102 Yeager et al. Sep 2007 B2
7305627 Tannenbaum Dec 2007 B2
7590693 Chan et al. Sep 2009 B1
7624146 Brogne et al. Nov 2009 B1
7970834 Daniels et al. Jun 2011 B2
8050983 Eakin et al. Nov 2011 B1
8073122 Kay et al. Dec 2011 B2
20020023138 Quine et al. Feb 2002 A1
20020035635 Holden et al. Mar 2002 A1
20020059379 Harvey et al. May 2002 A1
20020099777 Gupta et al. Jul 2002 A1
20020194278 Golan Dec 2002 A1
20030086438 Laumen et al. May 2003 A1
20030115279 Quine et al. Jun 2003 A1
20040230642 Collet et al. Nov 2004 A1
20050039048 Tosey Feb 2005 A1
20050278413 Tannenbaum Dec 2005 A1
20070005717 LeVasseur et al. Jan 2007 A1
20070106730 Bhakta et al. May 2007 A1
20070106731 Bhakta et al. May 2007 A1
20070244977 Atkins Oct 2007 A1
20080005253 Vincent Jan 2008 A1
20080088428 Pitre et al. Apr 2008 A1
20080098072 Jones et al. Apr 2008 A1
20080155026 Daniels-Farrar et al. Jun 2008 A1
20080317228 Kay et al. Dec 2008 A1
20090138820 Lockhart et al. May 2009 A1
20090216849 Vincent Aug 2009 A1
20090282347 Abernethy et al. Nov 2009 A1
20100138507 Sun et al. Jun 2010 A1
20100304766 Goyal Dec 2010 A1
Related Publications (1)
Number Date Country
20110047222 A1 Feb 2011 US