BACKGROUND OF THE INVENTION 
   1. Field of the Invention 
   This invention relates generally to the field of data processing systems. More particularly, the invention relates to an improved system and method for processing message attachments between a data service and a data processing device. 
   2. Description of the Related Art 
   E-mail has become an irreplaceable tool in today&#39;s business environment. Virtually all corporate employees rely on e-mail in one way or another to communicate both externally with customers and internally with other employees. 
   Current e-mail standards allow files to be “attached” and transmitted along with e-mail messages. The most common file attachment standard is the Multipurpose Internet Mail Extensions (“MIME”) standard, which encodes files on the transmitting end (e.g., using binary-to-ASCII encoding) and subsequently decodes the files on the receiving end. A header is added to the files which includes an indication of the type of data contained in the files and the encoding method used. Secure MIME (“S/MIME”) is a version of MIME that adds Rivest-Shamir-Adleman (“RSA”) encryption for secure transmission. 
   If the client receiving the e-mail message has the proper software installed, once the attachments are decoded, they may be viewed, executed and/or edited by the message recipient. One problem which exists, however, is that not all clients are equipped with the software required to process all types of message attachments. For example, if an attachment is compressed using a particular compression tool (e.g., such as Winzip™), the message recipient will not be able to open the attachment unless he/she has the compression tool installed on his/her client computer. Similarly, if the attachment is in a particular document format (e.g., Adobe&#39;s Portable Document Format), the recipient will not be able to view or edit the attachment unless support for that format is installed on his/her client computer. 
   Attachments are particularly problematic for wireless and/or portable data processing devices which, quite frequently, do not support standard file formats and executables. Thus, while many wireless/portable devices are capable of connecting to the Internet to download e-mail messages, the message attachments may be unusable. 
   Accordingly, what is needed is an improved system and method for intelligently processing e-mail message attachments. What is also needed is a system and method which will work without the need for additional software on the receiving client computer or wireless/portable data processing device. 
   SUMMARY 
   A method is described comprising: receiving an e-mail containing an original attachment at a data service, the e-mail addressed to a data processing device to which the data service is communicatively coupled, the data processing device having specified processing capabilities; converting the original attachment based on the specified processing capabilities to a format which the data processing device can process; receiving an e-mail response from the data processing device intended to include the original attachment; locating and reattaching the original attachment; and transmitting the e-mail message with the original attachment to its destination. 


   
     BRIEF DESCRIPTION OF THE DRAWINGS 
     A better understanding of the present invention can be obtained from the following detailed description in conjunction with the following drawings, in which: 
       FIG. 1  illustrates one embodiment of a data processing service communicating with a data processing device. 
       FIG. 2  illustrates attachment processing logic according to one embodiment of the invention. 
       FIG. 3  illustrates an attachment processing method according to one embodiment of the invention. 
   


   DETAILED DESCRIPTION OF PREFERRED EMBODIMENTS 
   Described below is a system and method for coordinating between a plurality of e-mail accounts. Throughout the description, for the purposes of explanation, numerous specific details are set forth in order to provide a thorough understanding of the present invention. It will be apparent, however, to one skilled in the art that the present invention may be practiced without some of these specific details. In other instances, well-known structures and devices are shown in block diagram form to avoid obscuring the underlying principles of the present invention. 
   Embodiments of a Data Processing Service 
   Embodiments of the invention may be implemented on a data processing service  100  such as that illustrated generally in  FIG. 1 . The service  100 , which may be comprised of one or more servers, provides a portal through which data processing devices  110  may access content (e.g., Web pages, multimedia content, e-mail, . . . etc) from external Internet sites  130 . Embodiments of such a service  100  are described in co-pending application entitled NETWORK PORTAL SYSTEM, APPARATUS AND METHOD, Ser. No. 09/714,897, now U.S. Pat. No. 6,721,804, Filed Nov. 15, 2000 (hereinafter “Network Portal Application”), which is assigned to the assignee of the present application and which is incorporated herein by reference. Certain features of the service  100  will now be described followed by a detailed description of a system and method for processing message attachments. 
   In one embodiment, the service  100  converts standard applications and data into a format which each wireless data processing device  110  can properly interpret. Thus, as illustrated in  FIG. 1 , one embodiment of the service  110  includes a content conversion module  120  for processing requests for Internet content  140 . More particularly, the service  100  acts as a proxy for the data processing device  110 , forwarding Internet requests  140 ,  141  to the appropriate Internet site  130  on behalf of the data processing device  110 , receiving responses from the Internet site  130  in a standard Internet format (e.g., Web pages with embedded audio/video and graphical content, e-mail messages with attachments, . . . etc), and converting the standard Internet responses  124  into a format which the data processing device  110  can process (e.g., bytecodes as described in the Network Portal Application). 
   For example, the conversion module  120  may include a hypertext markup language (“HTML”) rendering module (not shown) for interpreting HTML code and downloading any embedded content in the HTML code (e.g., graphics, video, sound, . . . etc) to the service  100 . The conversion module  120  may then combine the HTML code and embedded content and generate a set of bytecodes for accurately reproducing the requested content on the data processing device  110 . As described above, in one embodiment, the bytecodes may be Java bytecodes/applets. However, the conversion module  120  may generate various other types of interpreted and/or non-interpreted code, depending on the particular type of data processing device  110  being used (e.g., one with an interpreter module or one without). 
   Because one embodiment of the service  100  maintains an intimate knowledge of the capabilities/configuration of each data processing device  110  (e.g., screen size, graphics/audio capabilities, available memory, processing power, user preferences, . . . etc) it can reconstruct the requested Internet content accurately, while at the same time minimizing the bandwidth required to transmit the content to the device  110 . For example, the conversion module  120  may perform pre-scaling and color depth adjustments to the requested content so that it will be rendered properly within the data processing device&#39;s  110 &#39;s display. In making these calculations, the conversion may factor in the memory and processing power available on the data processing device  110 . In addition, the conversion module  120  may compress the requested content using a variety of compression techniques, and thereby preserve network bandwidth. 
   In one embodiment, the conversion module  120  will simply discard Internet content which either cannot be reproduced on the data processing device  110 , or which the user has indicated that he/she does not want to be reproduced on the portal device. For example, a user may indicate that he/she does not want sounds to be generated on the data processing device  110  or that he/she does not want advertisements transmitted to the data processing device  110 . The conversion module  120  will then remove any sounds or advertisements embedded in the requested Web page (or other requested Internet content). Because HTML rendering and other advanced processing of Internet content/data is offloaded to the service  100  as described above, the data processing device  110  can be manufactured using a low power microprocessor or microcontroller, thereby lowering the cost of manufacture and/or the energy consumed by the device  110 . 
   In one embodiment, when a particular Web page or other Internet object has been converted into a format suitable for execution on the data processing device  110  the formatted page/object may be stored locally on a cache  125  maintained at the service  100 . The next time the content is requested, the conversion module  120  may simply read the previously-generated code from the local cache  125  (i.e., it will no longer need to retrieve the content from remote locations to reconstruct the code). 
   Various caching techniques and algorithms may be implemented to ensure that the cache  125  is storing Internet data efficiently (i.e., resulting in an acceptable percentage of cache ‘hits’) and that the data is current. For example, the service  100  may cache the most frequently-requested Internet data (e.g., the Yahoo™ home page), and may remove content from the cache based on a least-recently used caching policy. In addition, to ensure that data stored in the cache is current, the service  100  may compare the version of the data stored in the cache  125  with the version of data stored at the remote Internet site  130  when the data is requested. Similarly, the service  100  may store data in the cache  125  for some predetermined period of time before checking the remote server  130  for a new version. Various other Internet caching techniques may be employed while still complying with the underlying principles of the invention (e.g., those defined in the Internet Caching Protocol (“ICP”) and/or the Cache Array Routing Protocol (“CARP”)). 
   Message Attachment Processing 
   One embodiment of the service  100 , illustrated in  FIG. 2 , is comprised of an attachment processing module  240  for processing e-mail attachments transmitted to and from the wireless device  110 . The attachment processing module  240  is itself comprised of an attachment conversion module  241  for converting e-mail attachments based on the wireless device specifications (e.g., processing capabilities, screen resolution, . . . etc), and an attachment analysis module  242  for identifying attachment types and maintaining a link between attachments sent to the wireless device  110  and original attachments stored on the user&#39;s e-mail account. Thus, the attachment conversion module  241  operates in a similar manner to the content conversion module  120  described above except that it specifically converts e-mail attachments for rendering on the wireless device  110 . 
   In one embodiment, the attachment processing techniques described herein may be applied to both internal e-mail accounts  220  (i.e., internal in the sense that they are maintained by the service  100 ) and external e-mail accounts  230  (e.g., accounts provided by Internet Service Providers or Web portals such as Yahoo™). In addition, while embodiments of the invention are described herein with respect to a wireless device  110  communicating over a wireless network  210 , it should be noted that many of these embodiments may be employed for a non-wireless client  215  communicating over a standard, wired network. 
     FIG. 3  illustrates one embodiment method which may be employed by the system illustrated in  FIG. 2 . At  300 , when a new e-mail message is initially received at one of the user&#39;s e-mail accounts  220 ,  230  the attachment processing module  240  determines whether the e-mail includes an attachment. In one embodiment, the attachment analysis module  242  makes this determination by searching the e-mail message for an attachment header or for some other indication that the message contains an attachment such as a stream of unidentified bytes (e.g., an “octet-stream”). 
   If the message does not contain an attachment then, at  310 , the service transmits the message to the wireless device  110 . Prior to transmission, the service  100  may also convert the e-mail message so that the message may be properly rendered by the wireless device  110 . For example, if the e-mail message body is in an HTML format, and the wireless device  110  cannot interpret HTML, the service  100  will convert the HTML content into a format which is interpretable by the device (e.g., as described above with respect to  FIG. 1 ). 
   If the e-mail message contains an attachment then, at  315 , the attachment analysis module  242  attempts to determine the attachment type. Virtually any type of file may be attached to an e-mail message including, by way of example but not limitation, a file compressed or otherwise encoded/encrypted (hereinafter “encoded”) using a specified encoding algorithm (e.g., Winzip); a file formatted according to a particular word processing program (e.g., Microsoft Word); and an encoded and/or compressed image (e.g., a JPEG image) which may only be properly displayed using a particular minimum color depth and resolution. In one embodiment, the attachment analysis module will identify the attachment type directly from the attachment header. Sometimes, however, the attachment may not be identified in the header. Rather, it may be delivered as a stream of bytes (an octet stream) with no indication of file type. In this case, the attachment analysis module  242  may perform a more in-depth analysis on the file. For example, in one embodiment, the attachment analysis module  242  may use portions of the file name such as the filename extension (e.g., “.doc” for Microsoft Word documents; “.jpg” for JPEG images, . . . etc) to attempt to identify the file type. In addition, in one embodiment, the attachment analysis module  242  examines the underlying data in the attachment for well known headers. For example, GIF images always start with “GIF87” or “GIF89a.” Similarly, JPEG images start with the bytes “FF D8.” 
   The attachment analysis module  242  may also query the user as to the file type (e.g., asking the user to link the file to a particular type of application). Various other attachment identification techniques may be employed while still complying with the underlying principles of the invention. 
   Once the attachment file type is identified, at  320 , the attachment conversion module  241  checks to see if a known mechanism exists (e.g., rules, instructions, program code, . . . etc) for converting this type of attachment into a format which the wireless device  110  can process. If it does, it converts the attachment and, at  325 , transmits the converted version of the attachment along with the e-mail message to the wireless device  110 . 
   If the attachment conversion module  241  cannot identify the attachment or a conversion mechanism for the attachment, in one embodiment, it may simply refrain from transmitting the attachment to the wireless device  110 . It may, however, notify the user that the original message contained an attachment and may include the attachment name within the e-mail message. The attachment conversion module  241  may subsequently transmit the unprocessed attachment to the wireless device in response to a request from the user. The user may then manually attempt to access/process the attachment. 
   Various types of conversion may be employed by the attachment conversion module  241 . For example, if the attachment is a JPEG image, the conversion module  241  may shrink the JPEG image to fit on the wireless device&#39;s screen and/or may change the color depth of the image (e.g., it may convert the image to grayscale). Similarly, if the attachment is a Word file, the conversion module  241  may convert the content of the Word file into to a format viewable on the wireless device&#39;s screen. If the attachment is a compressed and/or encoded file (e.g., compressed/encoded using Winzip) the conversion module  241  may initially decompress/decode the file to extract the files embedded within the compressed/encoded file. If it can identify the embedded files it may then convert the embedded files as described above, before transmitting the embedded files to the wireless device  110 . 
   A virtually unlimited number of file types may be converted by the attachment processing module  240  for rendering on the wireless device  110  including, but not limited to, Portable Network Graphics (“PNG”) files, Graphics Interchange Format (“GIF”) files, Portable Document Format (“PDF”) files, Hypertext Markup Language (“HTML”) files with different levels of embedded content. Moreover, various additional encoding types may be processed (i.e., decoded and/or re-encoded) including, but not limited to, uuencoding, base64 encoding, and binhex encoding. 
   Once the e-mail message is received by the wireless device  110 , the user may subsequently respond to the e-mail message while still retaining the email message history, including the attachment. In addition, the user may forward the e-mail to another user with the attachment. The user may also detach the attachment file and subsequently re-attach the attachment file to a new e-mail message addressed to another user. In each of these cases, one embodiment of the attachment processing module  240  will transmit the attachment in its original form to the destination address, rather than in its converted form (i.e., so that the message recipient may process the message attachment). However, in one embodiment, the attachment processing module  240  will initially determine whether the destination address is another wireless device capable of processing the converted attachment (e.g., a device of a user subscribed to the service  100 ). If so, the attachment processing module  240  will transmit the converted attachment, rather than the original attachment. 
   In one embodiment, when an e-mail containing an attachment is transmitted from the wireless device, instead of sending the converted attachment over the wireless network, only a reference to the attachment is transmitted (e.g., “include attachment #2”), thereby conserving a considerable amount of bandwidth. The reference is subsequently used by the attachment processing module  240  to locate the original attachment. 
   The original attachment may be identified and/or regenerated by the attachment processing module  240  in a variety of ways. For example, in one embodiment, the attachment processing module  240  maintains a link between attachments stored in the e-mail databases  220 ,  230  (i.e., the original attachments) and the converted attachments stored on the wireless device  110 . The link may simply be a table containing attachment/message ID codes on the wireless device and corresponding e-mail database attachment/message ID codes. Upon receiving an e-mail from the wireless device  110  with a converted attachment, or with a reference to the attachment, the attachment processing module  240  may perform a lookup in the table using the message&#39;s and/or attachment&#39;s ID code to identify the corresponding original attachment. 
   In one embodiment, however, the attachment and/or e-mail message ID code does not change when the attachment is converted and transmitted to the wireless device  110 . Accordingly, in this embodiment, no table lookup is required to identify the attachment within the e-mail databases  220 ,  230 . 
   In another embodiment, the attachment conversion module  241  may regenerate the original attachment from the converted attachment. For example, in the case of a Microsoft Word file or other word processing document, the attachment conversion module  241  may reconstruct the format of the original file using text and other information from the converted file. In one embodiment, data may be embedded within the converted file indicating specifically how the Word file should be regenerated. Similarly, in the case of a compressed/encoded file, the attachment conversion module  241  may recompress/re-encode the embedded files. Various other techniques may be employed to link and/or regenerate converted attachments to standard attachments while still complying with the underlying principles of the invention. 
   Embodiments of the invention may include various steps as set forth above. The steps may be embodied in machine-executable instructions which cause a general-purpose or special-purpose processor to perform certain steps. Alternatively, these steps may be performed by specific hardware components that contain hardwired logic for performing the steps, or by any combination of programmed computer components and custom hardware components. 
   Elements of the present invention may also be provided as a machine-readable medium for storing the machine-executable instructions. The machine-readable medium may include, but is not limited to, floppy diskettes, optical disks, CD-ROMs, and magneto-optical disks, ROMs, RAMs, EPROMs, EEPROMs, magnetic or optical cards, or other type of media/machine-readable medium suitable for storing electronic instructions. 
   Throughout the foregoing description, for the purposes of explanation, numerous specific details were set forth in order to provide a thorough understanding of the invention. It will be apparent, however, to one skilled in the art that the invention may be practiced without some of these specific details. For example, while embodiments of the invention are described above in the context of “attachments,” certain principles of the invention may be employed using a variety of alternate e-mail message data. Accordingly, the scope and spirit of the invention should be judged in terms of the claims which follow.
A method is described comprising: receiving an e-mail containing an original attachment at a data service, the e-mail addressed to a data processing device to which the data service is communicatively coupled, the data processing device having specified processing capabilities; converting the original attachment based on the specified processing capabilities to a format which the data processing device can process; receiving an e-mail response from the data processing device intended to include the original attachment; locating and reattaching the original attachment; and transmitting the e-mail message with the original attachment to its destination.