US20050005164A1 - Apparatus and method for precluding e-mail distribution - Google Patents

Apparatus and method for precluding e-mail distribution Download PDF

Info

Publication number
US20050005164A1
US20050005164A1 US10/600,249 US60024903A US2005005164A1 US 20050005164 A1 US20050005164 A1 US 20050005164A1 US 60024903 A US60024903 A US 60024903A US 2005005164 A1 US2005005164 A1 US 2005005164A1
Authority
US
United States
Prior art keywords
mail
list
hash codes
hash
addresses
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Abandoned
Application number
US10/600,249
Inventor
Bronwyn Syiek
Nina Bhanap
Rakesh Gowda
Ramesh Guntha
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Quinstreet Inc
Original Assignee
Quinstreet Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Quinstreet Inc filed Critical Quinstreet Inc
Priority to US10/600,249 priority Critical patent/US20050005164A1/en
Assigned to QUINSTREET, INC. reassignment QUINSTREET, INC. ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: BHANAP, NINA, GOWDA, RAKESH, GUNTHA, RAMESH, SYIEK, BRONWYN
Priority to PCT/US2004/019813 priority patent/WO2004114092A2/en
Publication of US20050005164A1 publication Critical patent/US20050005164A1/en
Assigned to COMERICA BANK reassignment COMERICA BANK INTELLECTUAL PROPERTY SECURITY AGREEMENT Assignors: QUINSTREET, INC.
Priority to US12/258,506 priority patent/US8429235B2/en
Abandoned legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L51/00User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail
    • H04L51/48Message addressing, e.g. address format or anonymous messages, aliases
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L51/00User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail
    • H04L51/21Monitoring or handling of messages
    • H04L51/212Monitoring or handling of messages using filtering or selective blocking

Definitions

  • This invention is directed to a method and apparatus for managing e-mail message transmission. More specifically, the present invention is directed to a method and apparatus by which proprietary e-mail addresses can be distributed to third party e-mail address filtration service providers.
  • E-mail Electronic mail, which is also known as “e-mail,” is the transmission of messages over communication networks, such as the Internet. E-mail messages can take the form of notes that are entered into a computer using a keyboard. They can also take the form of attachments to messages.
  • E-mail has many advantages over other forms of communication.
  • E-mail is much less expensive than mail service provided by the U.S. Postal Service (U.S.P.S.).
  • U.S.P.S. U.S. Postal Service
  • e-mail is delivered almost instantaneously.
  • an e-mail message cannot be delivered, an error notification is also received almost instantaneously.
  • Direct solicitations by telemarketing is slow and expensive. Because commercial messages via e-mail are inexpensive to both create and deliver, and because they are delivered almost instantaneously, e-mail is quickly become a marketing tool of choice for many companies.
  • SPAM® is a registered trademark of Hormel Foods, Corporation. For years, SPAM® has been used to identify Hormel's deviled luncheon meat spread. Perhaps unfortunately for Hormel, the word “spam” is now also being widely used to refer to unsolicited commercial e-mail messages sent to recipients who have not indicated a willingness to receive such unsolicited email messages from the sender. Spam now taxes the capabilities of many Internet service providers and is widely considered to be an annoyance by Internet users. Legislation to prohibit spam might not be far off.
  • FIG. 1 is a depiction of the operation of a hash coder, implemented in either hardware or software, but known in the prior art.
  • FIG. 2 is a block diagram of a system for filtering e-mail addresses prior to e-mail transmission.
  • FIG. 4 is a flow diagram of a method used in the method of FIG. 3 showing an element-by-element comparison of hash codes.
  • an e-mail address has at least three parts: a name or other designation of an addressee followed by a domain name and a domain.
  • the name and domain name are usually separated by the “@” symbol.
  • E-mail addresses in general take the form of:
  • ⁇ name of addressee> is an message recipient identifier
  • Examples of e-mail addresses include:
  • a hash coder is considered to be a device or software-implementation of a hash function.
  • a hash coder processes variable-length input strings, mathematically operates on the characters of an input string and generates a fixed-length output number or string that is uniquely-valued according to the input string. For a given hashing algorithm, a particular input string will always be encoded into the same output string. Stated alternatively, for every string input to a particular hashing function, there will be a unique output string.
  • Hash codes therefore provide a way to encode an e-mail address string in a way that the hash code can uniquely identify the address, without disclosing the address from which it was calculated. De-hashing a hash code is virtually impossible.
  • FIG. 1 depicts a hash coder 100 .
  • the hash coder can encode variable-length strings of text (ASCII representations of alpha-numeric characters) that are e-mail addresses, into fixed-length strings of alpha-numeric characters.
  • Examples of output hash codes are identified by reference numerals 104 , 108 , 112 , and 116 and are depicted as being output from the hash coder 100 .
  • Hash coder 100 can be implemented in hardware using combinational and/or sequential logic devices. Hash coder 100 can also be implemented using software or computer program instructions that are executed on an appropriately-capable processor, examples of which include a microprocessor or micro controller as well as main-frame computer.
  • variable length input e-mail address strings identified by reference numerals 102 , 106 , 110 , and 114 , are input to the hash coder 100 .
  • the characters that make up each input string 102 , 106 , 110 and 114 are operated on by the hash coder 100 and are mathematically processed to be converted by the hash coder 100 into multi-character, fixed-length string of letters and/or digits.
  • Each output string 104 , 108 , 112 , and 116 represents an input e-mail address and is considered to be a “hash code.”
  • Each hash code corresponds to, and therefore uniquely identifies a string of characters, which is the e-mail address from which the hash code was generated and to which a message would be sent.
  • the hash coder can accept as input, lists of e-mail addresses and generate lists of hash codes, each of which uniquely represents an e-mail address.
  • a “list” is a multi-element data structure that has a linear organization (first, second, third, . . . ) but that allows elements to be added or removed in any order.
  • a list of hash codes is a multi-element data structure of hash codes.
  • Hash codes of e-mail addresses can therefore be distributed to third parties without disclosing the actual addresses from which the hash codes were generated.
  • hash coding is a way of encoding addresses so as to preserve their identity.
  • the alphabetic characters of an e-mail address are first mapped or converted to lower case characters. (When hashed, an upper case letter and the same lower case letter will yield different hash codes. The characters of the address are then input to a hash coder, which generates an output hash code.
  • e-mail addresses are being converted into a form from which the actual e-mail address is not readily apparent, the e-mail addresses are considered herein as being “encoded.”
  • e-mail addresses are considered herein as being “encoded.”
  • Those of skill in the art will recognize that in addition “encoding” e-mail addresses by hash coding, other processes that convert variable-length strings to a fixed-length string could be used instead of hash coding. Therefore, as used herein, the term “encoded” should be construed to include both hash coding per se, but also to include any other process by which variable length strings can be converted to a fixed-length string.
  • FIG. 2 depicts the components of a system 200 for controlling electronic mail message transmission over a data network, such as the Internet.
  • a merchant 203 (of goods and/or services) selectively distributes its commercial/promotional message (advertising its goods and/or services) via e-mail using e-mail address filtering services of an e-mail list manager 210 .
  • the merchant can also use the services of an e-mail mass mailer 212 .
  • the term “merchant” refers to a commercial entity that is identified in FIG. 2 by reference numeral 203 .
  • a “merchant” distributes commercial messages over the Internet but in order to do so, such an entity requires, uses or operates one or more computers, which are identified in FIG. 2 by reference numeral 202 .
  • the “merchant” is a “client” to the list manager 210 , described more fully below.
  • an “e-mail mass mailer” is considered an entity that ordinarily distributes or sends e-mail messages indiscriminately, i.e., without any filtering or selectivity.
  • An e-mail mass mailer's computer is shown in FIG. 2 and identified by reference numeral 212 .
  • the e-mail mass mailer's computer 212 and the entity are considered to be one and the same.
  • the list manager 210 which is also an entity (not shown) that uses or operates one or more computers, provides a marketing function for the merchant. Such marketing activities can include creating commercial message content for the merchant 203 .
  • the list manager also provides a second service of receiving hashed e-mail addresses from the e-mail mass mailer 212 and filtering from the hashed e-mail addresses it receives, e-mail addresses to which a commercial message should not be sent.
  • the list manager 210 sorts and filters the hashed addresses to remove hashed addresses to which an e-mail message should not be sent.
  • Part of the list manager's 210 services to the merchant 203 can include the provision of one or more web sites (not shown for clarity) that deliver advertising content on behalf of the merchant 203 .
  • Such web sites preferably solicit prospective customers of the merchant 203 to provide their contact information by which the prospective customer of the merchant 203 can be contacted.
  • the information requested of the prospective customer on the web sites preferably includes an e-mail address to which information can be sent to the prospective customer via e-mail.
  • Obtaining contact information of prospective customers through the use of web site advertising is more effective if prospective customers are directed to a web site that promotes the merchant's goods and/or services.
  • One way to refer prospective customers to commercial messages at a web site is by way of a broadcast e-mail message (i.e., spam) directing someone to visit a web site whereat the merchant's 203 goods and/or services are advertised. If a person visits a web site after receipt of a suggestive e-mail, and then provides his or her contact information, such a person has identified themselves as being interested in the goods or services of the merchant and should be considered for follow-up marketing.
  • an unsolicited commercial e-mail message is delivered to numerous addressees having prior business relationships with the e-mail sender directing the e-mail recipients to one or more of the list manager's 210 web sites whereat the merchant's business is promoted. Visitors to a web site and who provide their contact information are considered to be leads that the merchant 203 can follow up with to stimulate additional business.
  • e-mail addresses In promoting goods and services using e-mail, many merchants prefer to avoid offending prospective customers by sending them unsolicited messages, redundant or duplicative messages, or sending messages to people who have specifically requested to not be sent unsolicited commercial messages. Accordingly, commercial messages of the merchant 203 should not be sent to various e-mail addresses and are herein referred to as e-mail addresses to which a message should not be sent. Such e-mail addresses can be obtained from at least three different sources.
  • e-mail addresses known to a merchant 203 to be inappropriate. Examples of such addresses include addresses of existing customers to whom additional promotional material or solicitations of new business would be inappropriate. In addition to existing customers, in some instances, sending solicitations for new business to former clients or customers who no longer need the goods or services of the merchant would be inappropriate. Individuals who have asked to be excluded from receiving unsolicited commercial messages should also not be sent an unsolicited commercial e-mail.
  • addresses that are known as such to the list manager 210 .
  • Examples of such addresses include the addresses of people who have asked the list manager 210 to exclude them from receiving unsolicited e-mail messages regarding that particular merchant only.
  • a request to be excluded from receiving unsolicited e-mail can come to the list manager in the form of a reply to a previously sent e-mail message (i.e., an unsubscribe request) or one of usually two links on an e-mail, on one of which a user “clicks” so as to unsubscribe from either mass mailer's data base by “clicking” on link or unsubscribing from the list manager's 210 data base by “clicking” on the other link.
  • the list manager 210 can receive specific requests from persons who ask to be excluded from all unsolicited commercial message deliveries but the list manager 210 can also purchase lists of addresses to which unsolicited messages regarding any merchant should not be sent. Addresses to which no messages should be sent are considered herein to be a “black list.” Sending an unsolicited commercial e-mail message can be counterproductive. Therefore, lists of possibly millions addresses to which a commercial message will be sent, such as lists from a mass mailer, are first compared to addresses known to be addresses to which an unsolicited commercial message should not be sent. Addresses to which unsolicited messages should not be sent are purged from an extended list of addresses to avoid sending what will be considered to be “spam.”
  • the list manager 210 acts on behalf of the merchant 203 and generates a commercial message, which the list manager 210 sends itself to e-mail addresses or forward to an e-mail mass mailer 212 for delivery.
  • the list manager 210 creates a commercial message for the merchant 203 but sends the message to an e-mail mass mailer 212 for delivery.
  • marketing services can be provided by an entirely different entity not shown in the figures while the e-mail address list filtration is performed by the link manager 210 .
  • the list manager 210 receives from the merchant's computer 202 , e-mail addresses known to the merchant 203 to be addresses to which the list manager 210 should not send a commercial message on behalf of the merchant 203 . E-mail addresses that are known to the merchant 203 to which a message should not be sent are purged by the list manager 210 from lists of e-mail addresses to which such messages will otherwise be sent.
  • the list manager 210 can also obtain from an e-mail mass mailer an extended list of e-mail addresses, to which a commercial message can be sent, i.e., a first list, albeit without any knowledge of whether any of the addressees wants or does not want to receive an unsolicited commercial message.
  • This so-called “first list” of addresses of potential recipients of a commercial message can be obtained from an e-mail mass mailer 212 or from the aforementioned web sites. Regardless of where or how the “first list” of addresses is obtained, the first list might contain addresses to which a message should not be sent.
  • the list manager 210 can send to the e-mail mass mailer 212 one or more e-mail domains to which no messages should be sent.
  • the e-mail mass mailer 212 purges from its list, all e-mail addresses that contain a particular domain name or any of the domain names specified by the list manager 210 . Remaining e-mail addresses that do not have the objected-to domain names can then be hash coded into LIST-1, with LIST-1 being processed as described otherwise.
  • the extraction of certain e-mail addresses having certain domain names by the e-mail mass mailer 212 can be accomplished a number of ways, including by way of additional functionality that accompanies the hash code software that is distributed to the e-mail mass mailer 212 from the list manager 210 .
  • the e-mail addresses known to the merchant 203 as addresses to which a message should not be sent comprise a list that is known as a “suppression list” 204 .
  • Addresses in a suppression list are often the e-mail addresses of existing customers to whom another promotional message might prove aggravating.
  • Suppression list entries also include former customers or clients, or entities/persons to whom a commercial message might be inappropriate in light of its subject matter.
  • Addresses lists that are known to the list manager 210 as addresses to which a message should not be sent are known as “unsubscribe lists” and “black lists.”
  • An “unsubscribe list” is considered to be a list of e-mail addresses that are of addressees who have requested the list manager 210 (or some other entity) exclude them from future e-mail mailings, albeit with respect to a particular merchant 203 (i.e., a particular client of the list manager 210 ).
  • the “black list” is considered to be a list of addresses of addressees who have requested the list manager 210 (or some other entity) to exclude them from all future mailings for all merchants (i.e., all clients of the list manager 210 ) and who should not receive any unsolicited commercial messages.
  • the list manager 210 purges from any list of addresses to which a commercial message will otherwise be sent, all addresses that are on either the suppression list 204 , the unsubscribe or the black list 214 .
  • the result of purging suppression list 204 addresses and unsubscribe and black list addresses 214 from the first list is a fourth list of addresses to which a commercial message may be sent.
  • customer lists represent trade secrets.
  • E-mail addresses lists are also generally considered customer lists. Exchanging lists of e-mail addresses between the merchant 203 , the list manager 210 and the e-mail mass mailer 212 is therefore problematic.
  • exchanging e-mail addresses without disclosing trade secrets is enabled by hashing the e-mail addresses prior to delivery to another entity.
  • e-mail addresses to be exchanged between a merchant 203 or its computer 202 , a list manager 210 and/or an e-mail mass mailer are coded by hash coding.
  • hash coding the variable-length strings of e-mail addresses the addresses are converted to fixed-length strings or letters and/or numbers, each of which uniquely identifies an e-mail address. Because the hash codes are all the same length, testing them for identity is greatly simplified.
  • hash codes on the second and third lists can be purged from lists of hash codes that were computed from e-mail addresses of the first list to yield a list of hash codes that identify addresses to which an e-mail message may be sent. Hashing the e-mail addresses into hash codes enables the existence of an e-mail address in one list to be determined to be in another list without disclosing the actual addresses in any of the lists.
  • hash codes that are sorted and filtered need to be computed using the same hash function.
  • hash code software that implements a hash code algorithm is provided to (the computer of) the merchant 202 and to the e-mail mass mailer 212 , thereby providing them with the ability to hash e-mail addresses into uniform-length hash codes.
  • the software that the list manager 210 distributes to the e-mail mass mailer 212 performs additional functionality on the computer(s) of the e-mail mass mailer 212 .
  • the software distributed to an e-mail mass mailer 212 from the list manager 210 also performs the functions of comparing the lists returned to the e-mail mass mailer 212 by the list manager 210 to the lists originally sent out by the e-mail mass mailer.
  • software distributed by the list manager 210 to the e-mail mass mailer also provides functionality by which one or more e-mail address domains can be identified to the e-mail mass mailer 212 .
  • the e-mail mass mailer 212 can then delete, remove or exclude from the list of e-mail addresses that it will hash, all addresses within one or more domain names.
  • the software distributed in step 218 also performs the function of extracting e-mail address strings from a hash code returned to the e-mail mass mailer, which is a procedure/process described more fully below.
  • the list manager 210 receives a first list of hash codes (i.e., LIST-1) from an e-mail mass mailer 212 , each of which represents an e-mail address.
  • the list manager 210 also receives a second list of hash codes from the merchant's computer 202 (i.e., LIST-2) each of which represents an e-mail address on the merchant's 203 suppression list 204 .
  • E-mail addresses in the list manager's 210 unsubscribe list and black list are also hash coded by the list manager 210 using the same hash code algorithm that was distributed to the merchant 202 and the mass mailer 212 to form a third list (i.e., LIST-3).
  • the first, second and third lists of hash codes are each sorted by the list manager 210 using a prior art sorting algorithm known as “Quick Sort.” Sorting techniques are well known. Other sorting algorithms could certainly be used. In a preferred embodiment, list entries are sorted in ascending order. However, list entries could also be sorted in descending order.
  • step 220 sorted list entries are compared to each other to identify hash codes in LIST-1 that also appear in either LIST-2 or LIST-3. Hash codes in LIST-1 that appear in either LIST-2 or LIST-3 are purged from LIST-1 to yield a fourth list of hash codes, each of which represents an address to which an e-mail message may be sent (i.e., LIST-4).
  • LIST-4 is returned to the e-mail mass mailer (i.e., its owner), which extracts from the fourth lists of hash codes, each e-mail address on the first list, the hash code of which remains in the fourth list.
  • the resultant list of e-mail addresses are considered to be a list of targeted addresses.
  • the fourth list which is also considered to be a “filtered” or “purged” list of hash codes, represents a set of addresses to which an e-mail message of the merchant 203 may be sent.
  • the e-mail mass mailer 212 extracts or correlates each hash code in LIST-4 to the list of e-mail addresses from which LIST-1 was created to yield a set of targeted addresses to which a message can be transmitted in step 224
  • the merchant's computer 202 is operatively coupled to and thereby accesses a mass storage device 206 on which is stored the suppression lists 204 .
  • the mass storage device 206 also stores program instructions, which imbue the computer 202 with the ability to access a data network such as the Internet via a data network interface (not shown for clarity of FIG. 2 but well-known to those of ordinary skill).
  • a data network such as the Internet
  • the computer 202 can upload and download files via a data network, such as the Internet.
  • Program instructions stored in the mass storage device 206 include program instructions obtained from the e-mail list manager, which when executed by the computer 202 cause it to hash code e-mail addresses in the suppression lists 204 are stored in a file or database.
  • hash codes corresponding to e-mail addresses of the suppression list 204 are uploaded via the Internet (or other data network) to the e-mail list manager 210 .
  • the list of hash codes representing addresses to which an e-mail should not be sent is identified as “LIST-2” and sent to the e-mail list manager.
  • the e-mail mass mailer hash codes all of the addresses in the list(s) to which a commercial message might be sent. As shown in FIG. 2 , the list of hash codes from the e-mail mass mailer is sent to the e-mail list manager and identified as “LIST-1.”
  • the hash codes that are returned to the e-mail list manager 210 will be of the same length, which is a necessity in order to meaningfully compare hash codes in the various lists. If an e-mail address in the aforementioned suppression list (i.e., LIST-2) is also in e-mail mass mailer's list (i.e., LIST-1), when that particular e-mail address is hashed it should be converted into the exact same hash codes, regardless of who executes the hashing algorithm. That the hash codes are calculated using the same hash code algorithm enables the hash codes to be compared with any duplicates in the lists identifying duplicate addresses.
  • LIST-2 suppression list
  • LIST-1 e-mail mass mailer's list
  • FIG. 3 depicts a method of controlling electronic mail transmission over a network using the system depicted in FIG. 2 .
  • program steps outlined with solid lines are steps performed by the e-mail list manager 210 of FIG. 2 ; program steps outlined with dashed lines are performed by either the e-mail mass mailer 212 or the merchant's computer 202 , which are also shown in FIG. 2 .
  • the e-mail list manager ( 210 ) pre-distributes hash coding software to both the client/commercial advertiser computer ( 202 ) and to the e-mail mass mailer ( 212 ).
  • hash codes calculated by the merchant 203 , the list manager 210 and the e-mail mass mailer 212 can all be meaningfully compared.
  • LIST-1 and either LIST-2 or LIST-3 means that the same address in the first list of e-mails addresses (that was reduced to a particular hash code) must also be in the lists of e-mail addresses that were hashed to form LIST-2 and LIST-3, which are the lists of e-mail addresses to which an e-mail message should not be sent.
  • step 304 the merchant's computer 202 hash codes the list of addresses in the aforementioned suppression list using the software provided by the e-mail list manager in step 302 .
  • the merchant's computer ( 202 ) uploads the hash codes that represent e-mail addresses in the merchant's suppression list ( 204 ), to the e-mail list manager 210 .
  • the hashed addresses from the merchant's 203 suppression list comprise LIST-2.
  • Step 306 shows the e-mail list manager's 210 receipt of LIST-2 from the merchant's computer 202 .
  • the e-mail mass mailer ( 212 ) hash codes its list of e-mail addresses and uploads the resultant list of hash codes, which is denominated as LIST-1, to the e-mail list manager 210 .
  • the e-mail mass mailer ( 212 ) can hash its list of e-mail addresses at any time after it receives the hash code software or hash code algorithm. The e-mail mass mailer 212 does not need to wait until steps 304 or 306 have been executed in order to hash its e-mail addresses and/or send them to the list manager 210 .
  • Step 312 shows the list manager's 210 receipt of LIST-1, which as depicted in FIG. 3 occurs after LIST-2 is delivered to the list manager 210 in step 304 .
  • the order of hash code list deliveries to the list manager 210 is not critical. In an alternate and equivalent embodiment, LIST-1 is delivered to the list manager 210 prior to, or simultaneously with the delivery of LIST-2 to the list manager 210 .
  • the LIST-2 (i.e., the suppression list) is delivered to the list manager on a regular basis, e.g., whenever the merchant 203 /client gets new e-mail addresses.
  • the merchant 203 can either append to or replace a previously-sent suppression list.
  • the new e-mail addresses sent by the client are added to an existing suppression list.
  • “replacing” e-mail addresses all of the e-mail addresses in the existing suppression list are deleted and new e-mail addresses are added to the suppression list.
  • the e-mail mass mailer 212 sends its list whenever it is required to send a mass e-mail campaign.
  • the list manager 210 need not receive the hashed email addresses in any particular order from either the merchant 203 or the e-mail mass mailer 212 .
  • the e-mail list manager 210 can also generate it's own list of e-mail addresses to which e-mail messages should not be sent. Such addresses are referred to herein as an “unsubscribe list.”
  • the list manager 210 can also purchase lists of e-mail addresses to which messages should not be sent. Such addresses are referred to herein as “black lists.”
  • Black lists and “unsubscribe lists” are both lists of addresses to which unsolicited commercial messages should not be sent. For simplicity of illustration and explanation, both the unsubscribe list and the black list are referred to herein as LIST-3.
  • the e-mail list manager 210 generates, compiles, acquires or otherwise obtains one or more of the e-mail addresses, which when hashed make up LIST-3.
  • an e-mail mass mailer 212 can collect millions of e-mail addresses, which when hashed will yield millions of hash codes. Determining whether an entry in LIST-2 or LIST-3 is in LIST-1 is accomplished in significantly less time if all of the lists are sorted prior to comparison.
  • LIST-1, LIST-2 and LISTS 3 are sorted in step 320 in ascending alpha-numeric order using “Quick Sort” which is a sorting algorithm well-known to those of ordinary skill in the art. Quick Sort sorts the hash code lists in an ascending alpha-numeric order. The numbers zero through 9 are sorted first, then alphabetic characters from A to Z are sorted next. After LIST-1, LIST-2 and LIST-3 are sorted in step 320 , their respective elements (i.e., the hash codes in each list) will be in an ascending alpha-numerical order.
  • step 322 the entries of LIST-2 and LIST-3 that appear in LIST-1 are “purged” from LIST-1 to form LIST-4.
  • “purging” elements from LIST-1 connotes a removal of elements
  • step 322 encompasses any methodology by which the entries of LIST-1 that do not also occur in LIST-2 or LIST-3 become components of LIST-4.
  • LIST-4 could also be generated by flagging or marking elements of LIST-1 that also appear in LIST-2 or LIST-3.
  • the hash codings of addresses of LIST-1 that do not appear on either LIST-2 or LIST-3 are sent back to the e-mail mass mailer 212 . In a preferred embodiment, those addresses are sent as a list denominated as LIST-4.
  • LIST-4 is a list of hash codes
  • the addresses of the e-mail mass mailer that were hashed to form LIST-1 are correlated or cross-referenced to addresses in LIST-4 in order to extract addresses to which an e-mail message may be sent.
  • LIST-4 is returned to the e-mail mass mailer 212 whereat LIST-4 is used to identify e-mail addresses in LIST-1 from which the elements of LIST-4 were calculated.
  • Those e-mail addresses, the hash codes of which are in LIST-4 are addresses to which a commercial e-mail message may be sent.
  • the data network transmission time required to send LIST-4 back to the e-mail mass mailer 212 can be significantly reduced by subtracting hash codes that make up LIST-4 from LIST-1, to yield LIST-4A.
  • LIST-4 is subtracted from LIST-1 to yield LIST-4A.
  • LIST-4A is then a list of hash codes of LIST-1 that were purged by the list manager 210 .
  • LIST-4A will be considerably smaller than LIST-4.
  • LIST-4A which is a list of hash codes of addresses that were purged, is uploaded to the e-mail mass mailer 212 .
  • the e-mail mail mass mailer Upon receipt of LIST-4A, the e-mail mail mass mailer subtracts LIST-4A from LIST-1 to yield LIST-4, albeit by the e-mail mass mailer 212 .
  • the e-mail mass mailer ( 212 ) extracts, correlates or otherwise recovers e-mail address strings, which when they are hashed, render values that are elements of LIST-4. If LIST-4A was sent to the e-mail mass mailer 212 in step 325 , LIST-4A hash codes can be correlated with addresses that were hashed to make LIST-1 such that addresses that were hashed to yield an entry in LIST-4A are not sent an e-mail message.
  • step 328 the e-mail mass mailer ( 212 ) broadcasts a commercial message to addresses that were extracted from the hash codes that make up LIST-4.
  • the list manager 210 can compile LIST-1 from other sources, such as the aforementioned web sites that collect information from prospective customers of the merchant 203 .
  • step 308 is not required.
  • Step 312 would be modified to show that the e-mail list manager 210 was in receipt of LIST-1 and had previously calculated a hash code for each address to which an e-mail message could be sent.
  • the list manager 210 could also accumulate an unsubscribe list and a black list using the same methods described above.
  • the hash codes that make up LIST-3 would be calculated in step 318 .
  • FIG. 4 depicts step 322 of FIG. 3 in detail and shows a method of removing the hash codes of LIST-1 that also appear in either LIST-2 or in LIST-3.
  • step 401 three loop counters “X,” “Y,” and “Z” are initialized to the value “1.”
  • the loop counters are used as pointers to elements of sorted LIST-1, LIST-2 and LIST-3.
  • Loop counter x identifies a hash codes in LIST-1;
  • loop counter y identifies hash codes in LIST-2.
  • Loop counter z identifies hash codes in LIST-3, although LIST-3 can have hash codes that represent black listed e-mails and also unsubscribe list e-mails.
  • LIST-1, LIST-2 and LIST-3 are sorted using the aforementioned Quick Sort algorithm.
  • LIST-1, LIST-2 and LIST-3 are sorted in ascending alpha-numeric order.
  • the first entry in each list will have the lowest alpha-numeric value of all values in each list.
  • the last entry of each list will be the highest-valued entry in each list.
  • the search for common hash codes can be accomplished faster by reading a first value from LIST-1.
  • LIST-2 (or LIST-3) is then read, element-by-element. Each element from LIST-2 (or LIST-3) is compared to the first element of LIST-1 until a match between two element is determined or until the value of the LIST-2 hash code exceeds the value of the first LIST-1 hash code.
  • the next element of LIST-1 is read and compared to the preceding value from LIST-2 and all successive entries from LIST-2 until a LIST-2 value matches the LIST-1 value or until the LIST-2 value exceeds the LIST-1 value.
  • LIST-1 entries LIST-2 (and then LIST-3 entries) continues until the end of LIST-1 or LIST-2 is reached.
  • LIST-3 is compared to LIST-1 in the same manner as was LIST-2.
  • step 403 the lists, i.e., LIST-1, LIST-2 and LIST-3 (actually the two or more lists that comprise “LIST-3) are tested to determine whether the lists are mutually exclusive, i.e., whether there are no elements in any of the lists that are common.
  • List mutual exclusivity is quickly and easily determined by comparing the end values of the lists, albeit after the lists are sorted.
  • One test of mutual exclusivity is performed by testing the value of the first element of LIST-1 against the value of the last element of LIST-2 and LIST-3. If the value of the first element of LIST-1 is greater in value that the value of the last element of LIST-2 and LIST-3, all of the elements of LIST-1 are greater in value than the elements of the other lists and there are no elements in LIST-2 or LIST-3 in LIST-1. If either LIST-2 or LIST-3 has a terminal value greater than the first value of LIST-1, there might be an element of LIST-2 or LIST-3 in LIST-1 so the steps after step 403 need to be performed as set forth below.
  • Another equivalent test for mutual exclusivity is testing the value of the last element of LIST-1 against the value of the first element of LIST-2 and LIST-3. If the last element of LIST-1 is smaller than the value of the first element of LIST-2 and LIST-3, there are no elements in LIST-2 or LIST-3 in LIST-1. If either LIST-2 or LIST-3 have an initial value less than the terminal value of LIST-1, there might be a value in LIST-2 or LIST-3 that exists in LIST-1 so the steps after step 403 need to be performed as set forth below. In FIG.
  • step 404 using the loop counter x that was initialized to 1 in step 401 as a pointer, the first hash code from LIST-1 is read from memory into an accumulator or other register where it can be evaluated.
  • step 406 using the loop counter y as a pointer, the first hash code from LIST-2 is also read into a register from memory.
  • LIST-1 and LIST-2 entries are hash codes of the same length and since both LIST-1 and LIST-2 were sorted according to the same criteria, if the first hash code of LIST-1 is found in LIST-2, such an entry of LIST-1 is a hash code of an e-mail address to which a message should not be sent. Such an entry of LIST-1 is purged from LIST-1.
  • step 408 a test is performed to determine whether the x'th hash code in LIST-1 is equal to the y'th hash code of LIST-2. If the result of step 408 is positive, the x'th hash code of LIST-1 is “purged” from LIST-1 in step 410 , thereby creating at least part of LIST-4 by deleting an entry from LIST-1.
  • the loop counter x is incremented in step 414 by which the next hash code in LIST-1 will be tested against the y'th value of LIST-2, if the end of LIST-1 has not been reached as determined at step 418 .
  • step 418 a test is performed to determine if the LIST-1 pointer value of x (which was incremented in step 414 ) has reached a value n, which is shown in the legend of FIG. 4 to be the number of entries in LIST-1. If at step 418 X is not equal to n, the end of LIST-1 was not reached and program control returns to step 404 where the next x entry is read from LIST-1.
  • next x entry of LIST-1 equals the same y entry of LIST-2, it too is purged from LIST-1 in step 410 . If not, program control proceeds to step 412 .
  • the x loop counter is not incremented as in step 414 , but a test is instead performed at step 412 to determine whether the x'th entry is less than the y'th entry. If the result of the test at step 412 is positive, the x'th entry is smaller than the y'th entry and as a result, the next x'th entry is retrieved for testing by incrementing the x loop counter in step 414 . Whether the end of LIST-1 has been reached is tested in step 418 as before.
  • step 412 If the test at step 412 is negative, the x'th entry of LIST-1 is greater than the y'th entry of LIST-2, which means the next y entry of LIST-2 should be tested against the current x entry of LIST-1. In step 416 ; they loop counter will be incremented.
  • Step 420 tests whether the end of LIST-2 has been reached. If the result of step 420 is negative, program control returns to step 404 whereupon the next y entry is retrieved/tested from LIST-2. If at step 420 the result is positive, LIST-2 has been exhausted, at step 426 , the x value is re-initialized and the z counter is initialized enabling the testing of LIST-3 against LIST-1.
  • steps 404 and 406 they are executed only if their respective values were changed in previously-executed steps.
  • a test is performed in step 412 to determine if the x'th hash code value being compared to the y'th value, is less than the y'th value.
  • a determination that the x'th value is less than a y'th value at step 412 means three things: first, the two hash codes are not identical; second, the x'th hash code does need to be purged; third, the next x'th value needs to be tested against the same y'th value before incrementing y in order to determine whether the next x value might be in LIST-2.
  • step 414 x is incremented again in step 414 in order to retrieve the next-highest valued hash code in LIST-1 and compare it to the previously tested y value.
  • the x'th value is not less than the y'th value, the x'th value is therefore larger than the y'th value (because the test at step 408 failed).
  • the loop counter x is not incremented.
  • the y loop counter is incremented instead at step 416 in order to retrieve the next-greater valued hash code in LIST-2.
  • the y loop counter value is checked against the value of m, which is set equal to the number of entries in LIST-2, as shown in FIG. 4 .
  • program control returns to step 404 where the previously-read x value is read at step 404 followed by the retrieval of the next value from LIST-2.
  • step 408 the value of the x'th and y'th values are compared as before.
  • program steps 404 , 406 , 408 , 412 , 416 and 420 compare a particular hash code from LIST-1 and to hash codes from LIST-2. These steps check the particular hash code from LIST-1 against successive values from LIST-2 until a hash code of LIST-2 value equals the x value or, until a y value greater than the x value is read, or until the end of LIST-2 is reached.
  • Step 426 is reached when the end of LIST-1 or LIST-2 has been reached.
  • the LIST-1 loop counter x is reset to 1 and a LIST-3 loop counter, z is also set to 1 so that LIST-3 can be checked against LIST-1.
  • entries of LIST-1 are compared against entries of LIST-3 using the same search strategy set forth above.
  • LIST-3 can actually include two (2) lists.
  • the steps 430 - 450 need to be repeated for both the unsubscribe list and the black list.
  • the unsubscribe list entries and the black list entries can be merged into a single list that is compared to LIST-1 entries. For purposes of illustration however, only one component list of LIST-3 is depicted as being checked against entries of LIST-1.
  • the first entry of LIST-1 is read.
  • the first list of LIST-3 is read.
  • step 434 the x'th entry of LIST-1 is compared to the z'th entry of LIST-3. If these two hash codes are identical, program control proceeds to step 438 , whereat the x'th entry of LIST-1 is purged because it was detected in step 434 as being equal to the z'th entry of LIST-3.
  • the test at step 436 determines if the x'th entry value of LIST-1 is less than or greater than the z'th entry of LIST-3. Inasmuch as LIST-1 and LIST-3 are sorted in ascending order, if the x'th entry of LIST-1 is larger than the z'th entry of LIST-3, the next entry of LIST-3 is read by incrementing the z loop counter at step 440 . At step 444 , the z loop counter is checked against the length of the LIST-3 to determine if the last entry of LIST-3 was checked. If yes, the loop terminates at step 448 . If no, program control returns to step 430 where the previously-read value of LIST-1 is compared against the next value of LIST-3.
  • FIG. 4 provides for a comparison of hash codes in LIST-1 against hash codes in LIST-2 and LIST-3.
  • Each hash code of LIST-1 is checked against a series of hash codes from LIST-2 and LIST-3 until the value from LIST-2 and LIST-3 exceed the hash code of LIST-1 being tested whereupon the next-highest hash code from LIST-1 is checked against the most-recent value from LIST-2 and LIST-3.
  • the hash codes were forty characters in length.
  • entries of LIST-2 and LIST-3 can be hash codes of e-mail addresses to which commercial messages can be sent instead of hash codes of e-mail addresses to which e-mail messages should not be sent.
  • hash codes in LIST-1 that do not also appear in LIST-2 or LIST-3 should be purged from LIST-1, from which LIST-4 is created, instead of being purged from LIST-1 if they do appear in LIST-2 or LIST-3.
  • LIST-4 hash codes can be subtracted from the LIST-1 hash codes to yield a “LIST-4A.”
  • LIST-4A represents the addresses of LIST-1 that appear in either LIST-2 or LIST-3 and which were purged from LIST-1. Inasmuch as LIST-4A is usually much shorter than LIST-4, calculating LIST-4A means that the time required to transmit hash codes to purge can be significantly reduced.
  • the e-mail mass mailer 212 purges LIST-4A entries from LIST-1 yielding LIST-4. Entries of LIST-4 can be correlated with the original e-mail lists from which LIST-1 hash codes were calculated to yield the list of e-mail targeted addresses, identified in FIG. 2 by reference numeral 224 .
  • the function of the e-mail list manager 210 is separate and apart from both the e-mail mass mailer 212 and the commercial advertiser's computer 202 , the steps of computing and comparing hash codes of the commercial advertiser's suppression list (or authorization list) to the hash codes of an e-mail mass mailer 212 could all be performed by the merchant's computer 202 . Conversely, the hash code computation and comparisons could all be performed by the e-mail mass mailer. Accordingly, the salient aspects of the method are the reception of a first set of hash codes, each of which represent an e-mail address to which a message can be sent.
  • the entries of the first set of hash codes are compared to entries in at least a second set of hash codes, each of which represents an address to which an e-mail address should not be sent.
  • Hash codes in the first set that are also in the second set are purged from the first set, leaving a set of hash codes, each of which represents an address to which a commercial e-mail message may be sent.

Abstract

E-mail addresses are converted by a hashing function into hash codes. An e-mail mass mailer that can have millions of addresses hash codes all addresses to which a message might be sent to form a first list. An entity that wishes to exclude delivery of a message to various e-mail addresses, hash codes such addresses to form a second list. Hash codes in the first list that are also in the second list are purged from the first list to yield a third list of hash codes, each of which represents an e-mail address to which a message may be sent.

Description

    FIELD OF THE INVENTION
  • This invention is directed to a method and apparatus for managing e-mail message transmission. More specifically, the present invention is directed to a method and apparatus by which proprietary e-mail addresses can be distributed to third party e-mail address filtration service providers.
  • BACKGROUND OF THE INVENTION
  • Electronic mail, which is also known as “e-mail,” is the transmission of messages over communication networks, such as the Internet. E-mail messages can take the form of notes that are entered into a computer using a keyboard. They can also take the form of attachments to messages.
  • It is well known that e-mail has many advantages over other forms of communication. E-mail is much less expensive than mail service provided by the U.S. Postal Service (U.S.P.S.). Unlike the U.S.P.S. mail delivery, e-mail is delivered almost instantaneously. When an e-mail message cannot be delivered, an error notification is also received almost instantaneously. Direct solicitations by telemarketing is slow and expensive. Because commercial messages via e-mail are inexpensive to both create and deliver, and because they are delivered almost instantaneously, e-mail is quickly become a marketing tool of choice for many companies.
  • Unfortunately, the advantages of commercial message transmission by e-mail have caused such messages to overload networks that deliver them. Many Internet service providers claim that unsolicited commercial messages, which are known as “spam” account for most of the e-mail messages they deliver.
  • SPAM® is a registered trademark of Hormel Foods, Corporation. For years, SPAM® has been used to identify Hormel's deviled luncheon meat spread. Perhaps unfortunately for Hormel, the word “spam” is now also being widely used to refer to unsolicited commercial e-mail messages sent to recipients who have not indicated a willingness to receive such unsolicited email messages from the sender. Spam now taxes the capabilities of many Internet service providers and is widely considered to be an annoyance by Internet users. Legislation to prohibit spam might not be far off.
  • Many entities that send commercial messages by e-mail have begun to attempt to control unwanted e-mail message transmissions. Because many e-mail advertisers use e-mail lists that are provided by mass mailers, filtering e-mail address lists of an e-mail mass mailer to control spam is problematic because e-mail mass mailers are reluctant to turn over trade secrets embodied in e-mail address lists. Consequently, controlling the transmission of unwanted e-mail distributed by third-party service providers is inhibited by trade secret concerns. A method and apparatus by which e-mail address lists could be filtered to remove addressees who do not want to receive unwanted e-mail messages would be an improvement over the prior art.
  • A BRIEF DESCRIPTION OF THE DRAWINGS
  • FIG. 1 is a depiction of the operation of a hash coder, implemented in either hardware or software, but known in the prior art.
  • FIG. 2 is a block diagram of a system for filtering e-mail addresses prior to e-mail transmission.
  • FIG. 3 is a flow diagram of a method for controlling electronic mail message transmissions.
  • FIG. 4 is a flow diagram of a method used in the method of FIG. 3 showing an element-by-element comparison of hash codes.
  • DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS
  • A hash function is any mathematical algorithm that converts a variable-length string of letters and/or numbers into a fixed-length output string of letters and/or numbers. The output of a hash function is known as a “hash value” or “hash code.” Among other things, hash functions are used to create digital signatures of strings of characters.
  • As is well known, an e-mail address has at least three parts: a name or other designation of an addressee followed by a domain name and a domain. The name and domain name are usually separated by the “@” symbol.
  • E-mail addresses in general take the form of:
      • <name of addressee>@<domain name>.<domain>
  • Where <name of addressee> is an message recipient identifier.
  • Examples of e-mail addresses (all of which are fictitious) include:
      • john.smith@xyz.com
      • fred_morgan@abc.gov
      • s.person@internetserviceprovider.com
  • A hash coder is considered to be a device or software-implementation of a hash function. A hash coder processes variable-length input strings, mathematically operates on the characters of an input string and generates a fixed-length output number or string that is uniquely-valued according to the input string. For a given hashing algorithm, a particular input string will always be encoded into the same output string. Stated alternatively, for every string input to a particular hashing function, there will be a unique output string. Hash codes therefore provide a way to encode an e-mail address string in a way that the hash code can uniquely identify the address, without disclosing the address from which it was calculated. De-hashing a hash code is virtually impossible.
  • FIG. 1 depicts a hash coder 100. As is known in the art, the hash coder can encode variable-length strings of text (ASCII representations of alpha-numeric characters) that are e-mail addresses, into fixed-length strings of alpha-numeric characters. Examples of output hash codes are identified by reference numerals 104, 108, 112, and 116 and are depicted as being output from the hash coder 100.
  • Hash coder 100, can be implemented in hardware using combinational and/or sequential logic devices. Hash coder 100 can also be implemented using software or computer program instructions that are executed on an appropriately-capable processor, examples of which include a microprocessor or micro controller as well as main-frame computer.
  • In FIG. 1, variable length input e-mail address strings, identified by reference numerals 102, 106, 110, and 114, are input to the hash coder 100. The characters that make up each input string 102, 106, 110 and 114 are operated on by the hash coder 100 and are mathematically processed to be converted by the hash coder 100 into multi-character, fixed-length string of letters and/or digits. Each output string 104, 108, 112, and 116 represents an input e-mail address and is considered to be a “hash code.” Each hash code corresponds to, and therefore uniquely identifies a string of characters, which is the e-mail address from which the hash code was generated and to which a message would be sent. The hash coder can accept as input, lists of e-mail addresses and generate lists of hash codes, each of which uniquely represents an e-mail address.
  • As used herein, a “list” is a multi-element data structure that has a linear organization (first, second, third, . . . ) but that allows elements to be added or removed in any order. A list of hash codes is a multi-element data structure of hash codes.
  • Those of ordinary skill in the art know that de-hashing a hash code to recover a string from which the hash code was calculated is virtually impossible because of the computational complexity of most hash code algorithms. Hash codes of e-mail addresses can therefore be distributed to third parties without disclosing the actual addresses from which the hash codes were generated. In other words, hash coding is a way of encoding addresses so as to preserve their identity.
  • In converting an e-mail address to a hash code, the alphabetic characters of an e-mail address are first mapped or converted to lower case characters. (When hashed, an upper case letter and the same lower case letter will yield different hash codes. The characters of the address are then input to a hash coder, which generates an output hash code.
  • Inasmuch as e-mail addresses are being converted into a form from which the actual e-mail address is not readily apparent, the e-mail addresses are considered herein as being “encoded.” Those of skill in the art will recognize that in addition “encoding” e-mail addresses by hash coding, other processes that convert variable-length strings to a fixed-length string could be used instead of hash coding. Therefore, as used herein, the term “encoded” should be construed to include both hash coding per se, but also to include any other process by which variable length strings can be converted to a fixed-length string.
  • FIG. 2 depicts the components of a system 200 for controlling electronic mail message transmission over a data network, such as the Internet. In one embodiment of a method depicted by FIG. 2, a merchant 203 (of goods and/or services) selectively distributes its commercial/promotional message (advertising its goods and/or services) via e-mail using e-mail address filtering services of an e-mail list manager 210. In another embodiment, the merchant can also use the services of an e-mail mass mailer 212.
  • As used herein, the term “merchant” refers to a commercial entity that is identified in FIG. 2 by reference numeral 203. A “merchant” distributes commercial messages over the Internet but in order to do so, such an entity requires, uses or operates one or more computers, which are identified in FIG. 2 by reference numeral 202. The “merchant” is a “client” to the list manager 210, described more fully below.
  • As used herein, an “e-mail mass mailer” is considered an entity that ordinarily distributes or sends e-mail messages indiscriminately, i.e., without any filtering or selectivity. An e-mail mass mailer's computer is shown in FIG. 2 and identified by reference numeral 212. For simplicity of illustration, the e-mail mass mailer's computer 212 and the entity are considered to be one and the same.
  • Among other things, in one embodiment, the list manager 210, which is also an entity (not shown) that uses or operates one or more computers, provides a marketing function for the merchant. Such marketing activities can include creating commercial message content for the merchant 203. However, the list manager also provides a second service of receiving hashed e-mail addresses from the e-mail mass mailer 212 and filtering from the hashed e-mail addresses it receives, e-mail addresses to which a commercial message should not be sent. Because the hashed e-mail addresses provided by the mass mailer 212 are usually not sorted or filtered by the e-mail mass mailer, when the list manager 210 receives the hashed addresses, the list manager 210 sorts and filters the hashed addresses to remove hashed addresses to which an e-mail message should not be sent.
  • Part of the list manager's 210 services to the merchant 203 can include the provision of one or more web sites (not shown for clarity) that deliver advertising content on behalf of the merchant 203. Such web sites preferably solicit prospective customers of the merchant 203 to provide their contact information by which the prospective customer of the merchant 203 can be contacted. The information requested of the prospective customer on the web sites preferably includes an e-mail address to which information can be sent to the prospective customer via e-mail. Obtaining contact information of prospective customers through the use of web site advertising is more effective if prospective customers are directed to a web site that promotes the merchant's goods and/or services.
  • One way to refer prospective customers to commercial messages at a web site is by way of a broadcast e-mail message (i.e., spam) directing someone to visit a web site whereat the merchant's 203 goods and/or services are advertised. If a person visits a web site after receipt of a suggestive e-mail, and then provides his or her contact information, such a person has identified themselves as being interested in the goods or services of the merchant and should be considered for follow-up marketing. In another embodiment of the invention, an unsolicited commercial e-mail message is delivered to numerous addressees having prior business relationships with the e-mail sender directing the e-mail recipients to one or more of the list manager's 210 web sites whereat the merchant's business is promoted. Visitors to a web site and who provide their contact information are considered to be leads that the merchant 203 can follow up with to stimulate additional business.
  • In promoting goods and services using e-mail, many merchants prefer to avoid offending prospective customers by sending them unsolicited messages, redundant or duplicative messages, or sending messages to people who have specifically requested to not be sent unsolicited commercial messages. Accordingly, commercial messages of the merchant 203 should not be sent to various e-mail addresses and are herein referred to as e-mail addresses to which a message should not be sent. Such e-mail addresses can be obtained from at least three different sources.
  • One source of e-mail addresses to which an advertisement or promotion should not be sent, are e-mail addresses known to a merchant 203 to be inappropriate. Examples of such addresses include addresses of existing customers to whom additional promotional material or solicitations of new business would be inappropriate. In addition to existing customers, in some instances, sending solicitations for new business to former clients or customers who no longer need the goods or services of the merchant would be inappropriate. Individuals who have asked to be excluded from receiving unsolicited commercial messages should also not be sent an unsolicited commercial e-mail.
  • Another source of e-mail addresses to which an advertisement or promotion should not be sent are addresses that are known as such to the list manager 210. Examples of such addresses include the addresses of people who have asked the list manager 210 to exclude them from receiving unsolicited e-mail messages regarding that particular merchant only. A request to be excluded from receiving unsolicited e-mail can come to the list manager in the form of a reply to a previously sent e-mail message (i.e., an unsubscribe request) or one of usually two links on an e-mail, on one of which a user “clicks” so as to unsubscribe from either mass mailer's data base by “clicking” on link or unsubscribing from the list manager's 210 data base by “clicking” on the other link. The list manager 210 can receive specific requests from persons who ask to be excluded from all unsolicited commercial message deliveries but the list manager 210 can also purchase lists of addresses to which unsolicited messages regarding any merchant should not be sent. Addresses to which no messages should be sent are considered herein to be a “black list.” Sending an unsolicited commercial e-mail message can be counterproductive. Therefore, lists of possibly millions addresses to which a commercial message will be sent, such as lists from a mass mailer, are first compared to addresses known to be addresses to which an unsolicited commercial message should not be sent. Addresses to which unsolicited messages should not be sent are purged from an extended list of addresses to avoid sending what will be considered to be “spam.”
  • In one alternate embodiment, the list manager 210 acts on behalf of the merchant 203 and generates a commercial message, which the list manager 210 sends itself to e-mail addresses or forward to an e-mail mass mailer 212 for delivery. In another alternate embodiment, the list manager 210 creates a commercial message for the merchant 203 but sends the message to an e-mail mass mailer 212 for delivery. In yet another embodiment, marketing services can be provided by an entirely different entity not shown in the figures while the e-mail address list filtration is performed by the link manager 210.
  • In a preferred embodiment, the list manager 210 receives from the merchant's computer 202, e-mail addresses known to the merchant 203 to be addresses to which the list manager 210 should not send a commercial message on behalf of the merchant 203. E-mail addresses that are known to the merchant 203 to which a message should not be sent are purged by the list manager 210 from lists of e-mail addresses to which such messages will otherwise be sent.
  • The list manager 210 can also obtain from an e-mail mass mailer an extended list of e-mail addresses, to which a commercial message can be sent, i.e., a first list, albeit without any knowledge of whether any of the addressees wants or does not want to receive an unsolicited commercial message. This so-called “first list” of addresses of potential recipients of a commercial message can be obtained from an e-mail mass mailer 212 or from the aforementioned web sites. Regardless of where or how the “first list” of addresses is obtained, the first list might contain addresses to which a message should not be sent.
  • In an alternate embodiment, the list manager 210 can send to the e-mail mass mailer 212 one or more e-mail domains to which no messages should be sent. In such an embodiment, the e-mail mass mailer 212 purges from its list, all e-mail addresses that contain a particular domain name or any of the domain names specified by the list manager 210. Remaining e-mail addresses that do not have the objected-to domain names can then be hash coded into LIST-1, with LIST-1 being processed as described otherwise. The extraction of certain e-mail addresses having certain domain names by the e-mail mass mailer 212 can be accomplished a number of ways, including by way of additional functionality that accompanies the hash code software that is distributed to the e-mail mass mailer 212 from the list manager 210.
  • In a preferred embodiment, the e-mail addresses known to the merchant 203 as addresses to which a message should not be sent comprise a list that is known as a “suppression list” 204. Addresses in a suppression list are often the e-mail addresses of existing customers to whom another promotional message might prove aggravating. Suppression list entries also include former customers or clients, or entities/persons to whom a commercial message might be inappropriate in light of its subject matter.
  • Addresses lists that are known to the list manager 210 as addresses to which a message should not be sent are known as “unsubscribe lists” and “black lists.” An “unsubscribe list” is considered to be a list of e-mail addresses that are of addressees who have requested the list manager 210 (or some other entity) exclude them from future e-mail mailings, albeit with respect to a particular merchant 203 (i.e., a particular client of the list manager 210). The “black list” is considered to be a list of addresses of addressees who have requested the list manager 210 (or some other entity) to exclude them from all future mailings for all merchants (i.e., all clients of the list manager 210) and who should not receive any unsolicited commercial messages.
  • In order to control the distribution of commercial messages and avoid sending them to addresses where such message are either unwanted or inappropriate, the list manager 210 purges from any list of addresses to which a commercial message will otherwise be sent, all addresses that are on either the suppression list 204, the unsubscribe or the black list 214. The result of purging suppression list 204 addresses and unsubscribe and black list addresses 214 from the first list is a fourth list of addresses to which a commercial message may be sent.
  • As is well known, customer lists represent trade secrets. E-mail addresses lists are also generally considered customer lists. Exchanging lists of e-mail addresses between the merchant 203, the list manager 210 and the e-mail mass mailer 212 is therefore problematic. By using the invention disclosed and claimed herein, exchanging e-mail addresses without disclosing trade secrets is enabled by hashing the e-mail addresses prior to delivery to another entity. In a preferred embodiment, e-mail addresses to be exchanged between a merchant 203 or its computer 202, a list manager 210 and/or an e-mail mass mailer, are coded by hash coding. By hash coding the variable-length strings of e-mail addresses, the addresses are converted to fixed-length strings or letters and/or numbers, each of which uniquely identifies an e-mail address. Because the hash codes are all the same length, testing them for identity is greatly simplified. By converting lists of e-mail addresses into corresponding lists of hash codes, hash codes on the second and third lists can be purged from lists of hash codes that were computed from e-mail addresses of the first list to yield a list of hash codes that identify addresses to which an e-mail message may be sent. Hashing the e-mail addresses into hash codes enables the existence of an e-mail address in one list to be determined to be in another list without disclosing the actual addresses in any of the lists.
  • In order for the method disclosed herein to work, hash codes that are sorted and filtered need to be computed using the same hash function. As a result, and as shown in FIG. 2, in a first step, hash code software that implements a hash code algorithm is provided to (the computer of) the merchant 202 and to the e-mail mass mailer 212, thereby providing them with the ability to hash e-mail addresses into uniform-length hash codes.
  • In addition to distributing the hash code software, in step 218, the software that the list manager 210 distributes to the e-mail mass mailer 212 performs additional functionality on the computer(s) of the e-mail mass mailer 212. In a preferred embodiment, the software distributed to an e-mail mass mailer 212 from the list manager 210 also performs the functions of comparing the lists returned to the e-mail mass mailer 212 by the list manager 210 to the lists originally sent out by the e-mail mass mailer. In addition and as set forth below, software distributed by the list manager 210 to the e-mail mass mailer also provides functionality by which one or more e-mail address domains can be identified to the e-mail mass mailer 212. The e-mail mass mailer 212 can then delete, remove or exclude from the list of e-mail addresses that it will hash, all addresses within one or more domain names. In a preferred embodiment, the software distributed in step 218 also performs the function of extracting e-mail address strings from a hash code returned to the e-mail mass mailer, which is a procedure/process described more fully below.
  • After distributing the hash code software, in step 218 the list manager 210 receives a first list of hash codes (i.e., LIST-1) from an e-mail mass mailer 212, each of which represents an e-mail address. In step 208, the list manager 210 also receives a second list of hash codes from the merchant's computer 202 (i.e., LIST-2) each of which represents an e-mail address on the merchant's 203 suppression list 204. E-mail addresses in the list manager's 210 unsubscribe list and black list are also hash coded by the list manager 210 using the same hash code algorithm that was distributed to the merchant 202 and the mass mailer 212 to form a third list (i.e., LIST-3).
  • In order to expedite the search for hash codes in the various lists, the first, second and third lists of hash codes are each sorted by the list manager 210 using a prior art sorting algorithm known as “Quick Sort.” Sorting techniques are well known. Other sorting algorithms could certainly be used. In a preferred embodiment, list entries are sorted in ascending order. However, list entries could also be sorted in descending order.
  • In step 220, sorted list entries are compared to each other to identify hash codes in LIST-1 that also appear in either LIST-2 or LIST-3. Hash codes in LIST-1 that appear in either LIST-2 or LIST-3 are purged from LIST-1 to yield a fourth list of hash codes, each of which represents an address to which an e-mail message may be sent (i.e., LIST-4). In step 221, LIST-4 is returned to the e-mail mass mailer (i.e., its owner), which extracts from the fourth lists of hash codes, each e-mail address on the first list, the hash code of which remains in the fourth list. The resultant list of e-mail addresses are considered to be a list of targeted addresses.
  • In step 221, the fourth list, which is also considered to be a “filtered” or “purged” list of hash codes, represents a set of addresses to which an e-mail message of the merchant 203 may be sent. After the filtered list is returned to the e-mail mass mailer in step 221, in step 222, the e-mail mass mailer 212 extracts or correlates each hash code in LIST-4 to the list of e-mail addresses from which LIST-1 was created to yield a set of targeted addresses to which a message can be transmitted in step 224
  • As shown in FIG. 2, the merchant's computer 202 is operatively coupled to and thereby accesses a mass storage device 206 on which is stored the suppression lists 204. The mass storage device 206 also stores program instructions, which imbue the computer 202 with the ability to access a data network such as the Internet via a data network interface (not shown for clarity of FIG. 2 but well-known to those of ordinary skill). By way of data transmissions over a network such as the Internet, the computer 202 can upload and download files via a data network, such as the Internet.
  • Program instructions stored in the mass storage device 206 include program instructions obtained from the e-mail list manager, which when executed by the computer 202 cause it to hash code e-mail addresses in the suppression lists 204 are stored in a file or database.
  • In the aforementioned preferred embodiment, hash codes corresponding to e-mail addresses of the suppression list 204 are uploaded via the Internet (or other data network) to the e-mail list manager 210. As shown in FIG. 2, the list of hash codes representing addresses to which an e-mail should not be sent is identified as “LIST-2” and sent to the e-mail list manager.
  • Using the same hash code algorithm that was provided to the commercial advertiser's computer 202, the e-mail mass mailer hash codes all of the addresses in the list(s) to which a commercial message might be sent. As shown in FIG. 2, the list of hash codes from the e-mail mass mailer is sent to the e-mail list manager and identified as “LIST-1.”
  • Inasmuch as the commercial advertiser's computer 202 and the e-mail mass mailer 212 use the same hash code algorithm, the hash codes that are returned to the e-mail list manager 210 will be of the same length, which is a necessity in order to meaningfully compare hash codes in the various lists. If an e-mail address in the aforementioned suppression list (i.e., LIST-2) is also in e-mail mass mailer's list (i.e., LIST-1), when that particular e-mail address is hashed it should be converted into the exact same hash codes, regardless of who executes the hashing algorithm. That the hash codes are calculated using the same hash code algorithm enables the hash codes to be compared with any duplicates in the lists identifying duplicate addresses.
  • FIG. 3 depicts a method of controlling electronic mail transmission over a network using the system depicted in FIG. 2. As shown in the FIG. 3 legend, program steps outlined with solid lines are steps performed by the e-mail list manager 210 of FIG. 2; program steps outlined with dashed lines are performed by either the e-mail mass mailer 212 or the merchant's computer 202, which are also shown in FIG. 2.
  • In step 302, the e-mail list manager (210) pre-distributes hash coding software to both the client/commercial advertiser computer (202) and to the e-mail mass mailer (212). By using the same hash code algorithm, hash codes calculated by the merchant 203, the list manager 210 and the e-mail mass mailer 212 can all be meaningfully compared. The presence of the same hash code in LIST-1 and either LIST-2 or LIST-3 means that the same address in the first list of e-mails addresses (that was reduced to a particular hash code) must also be in the lists of e-mail addresses that were hashed to form LIST-2 and LIST-3, which are the lists of e-mail addresses to which an e-mail message should not be sent.
  • In step 304, the merchant's computer 202 hash codes the list of addresses in the aforementioned suppression list using the software provided by the e-mail list manager in step 302. In addition, in step 304, the merchant's computer (202) uploads the hash codes that represent e-mail addresses in the merchant's suppression list (204), to the e-mail list manager 210. The hashed addresses from the merchant's 203 suppression list comprise LIST-2.
  • Step 306 shows the e-mail list manager's 210 receipt of LIST-2 from the merchant's computer 202. In step 308, the e-mail mass mailer (212) hash codes its list of e-mail addresses and uploads the resultant list of hash codes, which is denominated as LIST-1, to the e-mail list manager 210. In an alternate and equivalent embodiment, the e-mail mass mailer (212) can hash its list of e-mail addresses at any time after it receives the hash code software or hash code algorithm. The e-mail mass mailer 212 does not need to wait until steps 304 or 306 have been executed in order to hash its e-mail addresses and/or send them to the list manager 210.
  • Step 312 shows the list manager's 210 receipt of LIST-1, which as depicted in FIG. 3 occurs after LIST-2 is delivered to the list manager 210 in step 304. The order of hash code list deliveries to the list manager 210 is not critical. In an alternate and equivalent embodiment, LIST-1 is delivered to the list manager 210 prior to, or simultaneously with the delivery of LIST-2 to the list manager 210.
  • In a preferred embodiment, the LIST-2 (i.e., the suppression list) is delivered to the list manager on a regular basis, e.g., whenever the merchant 203/client gets new e-mail addresses. The merchant 203 can either append to or replace a previously-sent suppression list. In “appending” e-mail addresses to a previously-sent list, the new e-mail addresses sent by the client are added to an existing suppression list. In “replacing” e-mail addresses, all of the e-mail addresses in the existing suppression list are deleted and new e-mail addresses are added to the suppression list. The e-mail mass mailer 212 sends its list whenever it is required to send a mass e-mail campaign. The list manager 210 need not receive the hashed email addresses in any particular order from either the merchant 203 or the e-mail mass mailer 212.)
  • As stated above, the e-mail list manager 210 can also generate it's own list of e-mail addresses to which e-mail messages should not be sent. Such addresses are referred to herein as an “unsubscribe list.” The list manager 210 can also purchase lists of e-mail addresses to which messages should not be sent. Such addresses are referred to herein as “black lists.”
  • “Black lists” and “unsubscribe lists” are both lists of addresses to which unsolicited commercial messages should not be sent. For simplicity of illustration and explanation, both the unsubscribe list and the black list are referred to herein as LIST-3. In step 318, the e-mail list manager 210 generates, compiles, acquires or otherwise obtains one or more of the e-mail addresses, which when hashed make up LIST-3.
  • As is well-known, an e-mail mass mailer 212 can collect millions of e-mail addresses, which when hashed will yield millions of hash codes. Determining whether an entry in LIST-2 or LIST-3 is in LIST-1 is accomplished in significantly less time if all of the lists are sorted prior to comparison. In a preferred embodiment, LIST-1, LIST-2 and LISTS 3 are sorted in step 320 in ascending alpha-numeric order using “Quick Sort” which is a sorting algorithm well-known to those of ordinary skill in the art. Quick Sort sorts the hash code lists in an ascending alpha-numeric order. The numbers zero through 9 are sorted first, then alphabetic characters from A to Z are sorted next. After LIST-1, LIST-2 and LIST-3 are sorted in step 320, their respective elements (i.e., the hash codes in each list) will be in an ascending alpha-numerical order.
  • In step 322, the entries of LIST-2 and LIST-3 that appear in LIST-1 are “purged” from LIST-1 to form LIST-4. Although “purging” elements from LIST-1 connotes a removal of elements, step 322 encompasses any methodology by which the entries of LIST-1 that do not also occur in LIST-2 or LIST-3 become components of LIST-4. LIST-4 could also be generated by flagging or marking elements of LIST-1 that also appear in LIST-2 or LIST-3. Regardless of how it is created, the hash codings of addresses of LIST-1 that do not appear on either LIST-2 or LIST-3 are sent back to the e-mail mass mailer 212. In a preferred embodiment, those addresses are sent as a list denominated as LIST-4.
  • Inasmuch as LIST-4 is a list of hash codes, the addresses of the e-mail mass mailer that were hashed to form LIST-1, are correlated or cross-referenced to addresses in LIST-4 in order to extract addresses to which an e-mail message may be sent. In step 324, LIST-4 is returned to the e-mail mass mailer 212 whereat LIST-4 is used to identify e-mail addresses in LIST-1 from which the elements of LIST-4 were calculated. Those e-mail addresses, the hash codes of which are in LIST-4, are addresses to which a commercial e-mail message may be sent.
  • In an alternate embodiment, the data network transmission time required to send LIST-4 back to the e-mail mass mailer 212 can be significantly reduced by subtracting hash codes that make up LIST-4 from LIST-1, to yield LIST-4A. In such an alternate embodiment, in step 323, LIST-4 is subtracted from LIST-1 to yield LIST-4A. LIST-4A is then a list of hash codes of LIST-1 that were purged by the list manager 210.
  • In most instances, LIST-4A will be considerably smaller than LIST-4. In step 325, LIST-4A, which is a list of hash codes of addresses that were purged, is uploaded to the e-mail mass mailer 212. Upon receipt of LIST-4A, the e-mail mail mass mailer subtracts LIST-4A from LIST-1 to yield LIST-4, albeit by the e-mail mass mailer 212.
  • In step 326, the e-mail mass mailer (212) extracts, correlates or otherwise recovers e-mail address strings, which when they are hashed, render values that are elements of LIST-4. If LIST-4A was sent to the e-mail mass mailer 212 in step 325, LIST-4A hash codes can be correlated with addresses that were hashed to make LIST-1 such that addresses that were hashed to yield an entry in LIST-4A are not sent an e-mail message.
  • In step 328, the e-mail mass mailer (212) broadcasts a commercial message to addresses that were extracted from the hash codes that make up LIST-4.
  • In an alternate embodiment, the list manager 210 can compile LIST-1 from other sources, such as the aforementioned web sites that collect information from prospective customers of the merchant 203. In such an embodiment where LIST-1 is compiled by the list manager 210, step 308 is not required. Step 312 would be modified to show that the e-mail list manager 210 was in receipt of LIST-1 and had previously calculated a hash code for each address to which an e-mail message could be sent.
  • In such an alternate embodiment, the list manager 210 could also accumulate an unsubscribe list and a black list using the same methods described above. The hash codes that make up LIST-3 would be calculated in step 318. FIG. 4 depicts step 322 of FIG. 3 in detail and shows a method of removing the hash codes of LIST-1 that also appear in either LIST-2 or in LIST-3.
  • In step 401, three loop counters “X,” “Y,” and “Z” are initialized to the value “1.” The loop counters are used as pointers to elements of sorted LIST-1, LIST-2 and LIST-3. Loop counter x identifies a hash codes in LIST-1; loop counter y identifies hash codes in LIST-2. Loop counter z identifies hash codes in LIST-3, although LIST-3 can have hash codes that represent black listed e-mails and also unsubscribe list e-mails. In FIG. 4, when x=1, the first value of LIST-1 will be read and compared to a y'th value from LIST-2. When x=2, the second value of LIST-1 will be read and compared to an x'th value of LIST-1. When y=1, the first value of LIST-2 will be read. When z=2500, the 2500'th value of LIST-3 will be read.
  • In step 402, LIST-1, LIST-2 and LIST-3 are sorted using the aforementioned Quick Sort algorithm. In a preferred embodiment, LIST-1, LIST-2 and LIST-3 are sorted in ascending alpha-numeric order. When the lists are sorted in ascending alpha-numeric order, the first entry in each list will have the lowest alpha-numeric value of all values in each list. The last entry of each list will be the highest-valued entry in each list. When the lists are so ordered, the search for common hash codes can be accomplished faster by reading a first value from LIST-1. LIST-2 (or LIST-3) is then read, element-by-element. Each element from LIST-2 (or LIST-3) is compared to the first element of LIST-1 until a match between two element is determined or until the value of the LIST-2 hash code exceeds the value of the first LIST-1 hash code.
  • When the value of a LIST-2 hash code exceeds the value of the LIST-1 hash code, the next element of LIST-1 is read and compared to the preceding value from LIST-2 and all successive entries from LIST-2 until a LIST-2 value matches the LIST-1 value or until the LIST-2 value exceeds the LIST-1 value.
  • The comparison of LIST-1 entries to LIST-2 (and then LIST-3 entries) continues until the end of LIST-1 or LIST-2 is reached. When the end of LIST-2 is reached, LIST-3 is compared to LIST-1 in the same manner as was LIST-2.
  • The steps of the sorting methodology might not need to be performed if there are no elements in LIST-2 and LIST-3 that are in LIST-1. In order to avoid wasting processor time, in step 403, the lists, i.e., LIST-1, LIST-2 and LIST-3 (actually the two or more lists that comprise “LIST-3) are tested to determine whether the lists are mutually exclusive, i.e., whether there are no elements in any of the lists that are common. List mutual exclusivity is quickly and easily determined by comparing the end values of the lists, albeit after the lists are sorted.
  • One test of mutual exclusivity is performed by testing the value of the first element of LIST-1 against the value of the last element of LIST-2 and LIST-3. If the value of the first element of LIST-1 is greater in value that the value of the last element of LIST-2 and LIST-3, all of the elements of LIST-1 are greater in value than the elements of the other lists and there are no elements in LIST-2 or LIST-3 in LIST-1. If either LIST-2 or LIST-3 has a terminal value greater than the first value of LIST-1, there might be an element of LIST-2 or LIST-3 in LIST-1 so the steps after step 403 need to be performed as set forth below.
  • Another equivalent test for mutual exclusivity is testing the value of the last element of LIST-1 against the value of the first element of LIST-2 and LIST-3. If the last element of LIST-1 is smaller than the value of the first element of LIST-2 and LIST-3, there are no elements in LIST-2 or LIST-3 in LIST-1. If either LIST-2 or LIST-3 have an initial value less than the terminal value of LIST-1, there might be a value in LIST-2 or LIST-3 that exists in LIST-1 so the steps after step 403 need to be performed as set forth below. In FIG. 4, at step 404, using the loop counter x that was initialized to 1 in step 401 as a pointer, the first hash code from LIST-1 is read from memory into an accumulator or other register where it can be evaluated. In step 406, using the loop counter y as a pointer, the first hash code from LIST-2 is also read into a register from memory.
  • Inasmuch as both LIST-1 and LIST-2 entries are hash codes of the same length and since both LIST-1 and LIST-2 were sorted according to the same criteria, if the first hash code of LIST-1 is found in LIST-2, such an entry of LIST-1 is a hash code of an e-mail address to which a message should not be sent. Such an entry of LIST-1 is purged from LIST-1.
  • In step 408, a test is performed to determine whether the x'th hash code in LIST-1 is equal to the y'th hash code of LIST-2. If the result of step 408 is positive, the x'th hash code of LIST-1 is “purged” from LIST-1 in step 410, thereby creating at least part of LIST-4 by deleting an entry from LIST-1. After step 410, the loop counter x is incremented in step 414 by which the next hash code in LIST-1 will be tested against the y'th value of LIST-2, if the end of LIST-1 has not been reached as determined at step 418.
  • In step 418, a test is performed to determine if the LIST-1 pointer value of x (which was incremented in step 414) has reached a value n, which is shown in the legend of FIG. 4 to be the number of entries in LIST-1. If at step 418 X is not equal to n, the end of LIST-1 was not reached and program control returns to step 404 where the next x entry is read from LIST-1.
  • If the next x entry of LIST-1 equals the same y entry of LIST-2, it too is purged from LIST-1 in step 410. If not, program control proceeds to step 412.
  • If the result of the test at step 408 is negative, the x loop counter is not incremented as in step 414, but a test is instead performed at step 412 to determine whether the x'th entry is less than the y'th entry. If the result of the test at step 412 is positive, the x'th entry is smaller than the y'th entry and as a result, the next x'th entry is retrieved for testing by incrementing the x loop counter in step 414. Whether the end of LIST-1 has been reached is tested in step 418 as before.
  • If the test at step 412 is negative, the x'th entry of LIST-1 is greater than the y'th entry of LIST-2, which means the next y entry of LIST-2 should be tested against the current x entry of LIST-1. In step 416; they loop counter will be incremented.
  • Step 420 tests whether the end of LIST-2 has been reached. If the result of step 420 is negative, program control returns to step 404 whereupon the next y entry is retrieved/tested from LIST-2. If at step 420 the result is positive, LIST-2 has been exhausted, at step 426, the x value is re-initialized and the z counter is initialized enabling the testing of LIST-3 against LIST-1.
  • As can be seen in steps 404 and 406, they are executed only if their respective values were changed in previously-executed steps.
  • It should be apparent to those of ordinary skill that, when program steps 404, 406, 408, 410, 414 and 418 are executed, every occurrence of an entry from LIST-2 in LIST-1 causes the deletion or purging of the LIST-2 entry from every occurrence of LIST-1. Inasmuch as the lists were sorted and may contain multiple entries of a hash code, repeated occurrences of an e-mail in LIST-1 that appears in LIST-2 are all purged.
  • With respect to the test at step 408, if an x'th value of LIST-1 is not equal to an y'th value of LIST-2, a test is performed in step 412 to determine if the x'th hash code value being compared to the y'th value, is less than the y'th value. Because the lists LIST-1, LIST-2 and LIST-3 were sorted in ascending order, a determination that the x'th value is less than a y'th value at step 412 means three things: first, the two hash codes are not identical; second, the x'th hash code does need to be purged; third, the next x'th value needs to be tested against the same y'th value before incrementing y in order to determine whether the next x value might be in LIST-2.
  • If at step 412 the y'th value is greater than the x'th value, at step 414, x is incremented again in step 414 in order to retrieve the next-highest valued hash code in LIST-1 and compare it to the previously tested y value.
  • If at step 412, the x'th value is not less than the y'th value, the x'th value is therefore larger than the y'th value (because the test at step 408 failed). The loop counter x is not incremented. The y loop counter is incremented instead at step 416 in order to retrieve the next-greater valued hash code in LIST-2. Before retrieving the next hash code from LIST-2, at step 420 the y loop counter value is checked against the value of m, which is set equal to the number of entries in LIST-2, as shown in FIG. 4.
  • If the value of y at step 420, is less than m, meaning that the last entry of LIST-2 has not been checked, program control returns to step 404 where the previously-read x value is read at step 404 followed by the retrieval of the next value from LIST-2. At step 408, the value of the x'th and y'th values are compared as before.
  • It should be apparent to those of ordinary skill that program steps 404, 406, 408, 412, 416 and 420 compare a particular hash code from LIST-1 and to hash codes from LIST-2. These steps check the particular hash code from LIST-1 against successive values from LIST-2 until a hash code of LIST-2 value equals the x value or, until a y value greater than the x value is read, or until the end of LIST-2 is reached.
  • Step 426 is reached when the end of LIST-1 or LIST-2 has been reached. At step 426, the LIST-1 loop counter x is reset to 1 and a LIST-3 loop counter, z is also set to 1 so that LIST-3 can be checked against LIST-1.
  • At step 430, entries of LIST-1 are compared against entries of LIST-3 using the same search strategy set forth above. Inasmuch as LIST-3 is described as possibly including a black list and/or an unsubscribe list, LIST-3 can actually include two (2) lists. In such a case, the steps 430-450 need to be repeated for both the unsubscribe list and the black list. In an alternative embodiment, the unsubscribe list entries and the black list entries can be merged into a single list that is compared to LIST-1 entries. For purposes of illustration however, only one component list of LIST-3 is depicted as being checked against entries of LIST-1.
  • At step 430, the first entry of LIST-1 is read. At step 432 the first list of LIST-3 is read.
  • At step 434, the x'th entry of LIST-1 is compared to the z'th entry of LIST-3. If these two hash codes are identical, program control proceeds to step 438, whereat the x'th entry of LIST-1 is purged because it was detected in step 434 as being equal to the z'th entry of LIST-3.
  • If at step 434 it is determined that the x'th entry of LIST-1 is not equal to the z'th entry of LIST-3, the test at step 436 determines if the x'th entry value of LIST-1 is less than or greater than the z'th entry of LIST-3. Inasmuch as LIST-1 and LIST-3 are sorted in ascending order, if the x'th entry of LIST-1 is larger than the z'th entry of LIST-3, the next entry of LIST-3 is read by incrementing the z loop counter at step 440. At step 444, the z loop counter is checked against the length of the LIST-3 to determine if the last entry of LIST-3 was checked. If yes, the loop terminates at step 448. If no, program control returns to step 430 where the previously-read value of LIST-1 is compared against the next value of LIST-3.
  • In light of the foregoing, it should be apparent to those or ordinary skill that the method depicted in FIG. 4 provides for a comparison of hash codes in LIST-1 against hash codes in LIST-2 and LIST-3. Each hash code of LIST-1 is checked against a series of hash codes from LIST-2 and LIST-3 until the value from LIST-2 and LIST-3 exceed the hash code of LIST-1 being tested whereupon the next-highest hash code from LIST-1 is checked against the most-recent value from LIST-2 and LIST-3.
  • In a preferred embodiment, the hash codes were forty characters in length.
  • By Quick sorting each list and checking values of LIST-1 against values of LIST-2 and LIST-3, it is possible to quickly sort through millions of hash codes in the lists to purge hash codes from LIST-1 that appear anywhere in LIST-2 or LIST-3.
  • In an alternate embodiment, entries of LIST-2 and LIST-3 can be hash codes of e-mail addresses to which commercial messages can be sent instead of hash codes of e-mail addresses to which e-mail messages should not be sent. In such an alternate embodiment, hash codes in LIST-1 that do not also appear in LIST-2 or LIST-3 should be purged from LIST-1, from which LIST-4 is created, instead of being purged from LIST-1 if they do appear in LIST-2 or LIST-3.
  • In yet another embodiment described above, LIST-4 hash codes can be subtracted from the LIST-1 hash codes to yield a “LIST-4A.” In such an embodiment, LIST-4A represents the addresses of LIST-1 that appear in either LIST-2 or LIST-3 and which were purged from LIST-1. Inasmuch as LIST-4A is usually much shorter than LIST-4, calculating LIST-4A means that the time required to transmit hash codes to purge can be significantly reduced. Upon receipt of LIST-4A, the e-mail mass mailer 212 purges LIST-4A entries from LIST-1 yielding LIST-4. Entries of LIST-4 can be correlated with the original e-mail lists from which LIST-1 hash codes were calculated to yield the list of e-mail targeted addresses, identified in FIG. 2 by reference numeral 224.
  • Although the preferred embodiment contemplates that the function of the e-mail list manager 210 is separate and apart from both the e-mail mass mailer 212 and the commercial advertiser's computer 202, the steps of computing and comparing hash codes of the commercial advertiser's suppression list (or authorization list) to the hash codes of an e-mail mass mailer 212 could all be performed by the merchant's computer 202. Conversely, the hash code computation and comparisons could all be performed by the e-mail mass mailer. Accordingly, the salient aspects of the method are the reception of a first set of hash codes, each of which represent an e-mail address to which a message can be sent. The entries of the first set of hash codes are compared to entries in at least a second set of hash codes, each of which represents an address to which an e-mail address should not be sent. Hash codes in the first set that are also in the second set are purged from the first set, leaving a set of hash codes, each of which represents an address to which a commercial e-mail message may be sent.

Claims (31)

1. A method of controlling electronic mail (e-mail) message transmission over a network comprised of:
receiving a first set of encoded e-mail addresses;
compiling a second set of encoded e-mail addresses to which an e-mail message should not be sent; and
removing from said first set of encoded e-mail addresses, each encoded e-mail address that is in said second set of encoded e-mail addresses thereby yielding a third set of encoded e-mail addresses to which an e-mail message may be sent.
2. The method of claim 1 wherein said step of receiving a first set of encoded e-mail addresses includes the step of:
receiving a first set of hash coded e-mail addresses.
3. The method of claim 1 wherein said step of receiving a first set of encoded e-mail addresses includes the step of:
receiving hash coded e-mail addresses from an e-mail mass mailer.
4. The method of claim 1 further comprised of the steps of:
sorting said first set of encoded e-mail addresses into a first ordered list of encoded e-mail addresses wherein said encoded e-mail addresses are in ascending order;
sorting said second set of encoded e-mail addresses into a second ordered list of encoded e-mail addresses wherein encoded e-mail addresses are in ascending order; and
beginning with a first entry in said first ordered list of encoded e-mail addresses, and beginning with a first entry in said second ordered list, comparing the first entry in said first ordered list to the first entry in said second ordered list then successive entries in said second ordered list, until the value of an entry in said second ordered list equals or exceeds the value of the first entry in said first list; and
removing the first entry from said first list upon the detection in said second ordered list of the first entry in said first ordered list, thereby yielding a third set of encoded e-mail addresses to which an e-mail message may be sent.
5. The method of claim 1 further including the step of: sending said third set of encoded e-mail address to an e-mail mass mailer via a data network.
6. The method of claim 1 further including the step of identifying e-mail address that are encoded in said third set of encoded e-mail addresses.
7. A method of controlling electronic mail (e-mail) message transmission over a network comprised of:
receiving a first set of hash codes, each of which represents an e-mail addresses;
receiving a second set of hash codes, each of which represents an e-mail addresses to which an e-mail message should not be sent; and
removing from said first set of hash codes, each hash code that is in said second set thereby yielding a third set of hash codes, each of which represents an e-mail addresses to which an e-mail message may be sent.
8. The method of claim 7 wherein said step of receiving a first set of hash codes includes the step of:
receiving a first set of hash codes from a mass e-mailer, each of which represents an e-mail address.
9. The method of claim 7 further comprised of the steps of:
i) sorting said first set of hash codes into a first ordered list of hash codes;
ii) sorting said second set of hash codes; and
iii) beginning with a first entry in said first ordered list of hash codes and beginning with a first entry in said second ordered list, comparing the first entry in said first ordered list of hash codes to said first entry in said second ordered list of hash codes and successive entries in said second ordered list of hash codes, until the value of an entry in said second ordered list equals or exceeds the value of the first entry in said first list, or until the last entry in the second ordered list of hash codes has been compared; and
iv) upon the detection in said first ordered list of hash codes, of an entry in said second ordered list of hash codes that is identical to said first entry in said first ordered list, removing the first entry from said first ordered list.
10. The method of claim 7 further including the step of: sending said third set of encoded e-mail address to an e-mail mass mailer via a data network.
11. A method of controlling electronic mail (e-mail) message transmission over a network comprised of:
receiving a first set of hash codes, each of which represents an e-mail addresses;
receiving a second set of hash codes, each of which represents an e-mail addresses to which an e-mail message should not be sent; and
creating a third set of hash codes that is comprised of the first set of hash codes minus hash codes that appear in the second set of hash codes, said third set of hash codes, representing e-mail addresses to which an e-mail message may be sent.
12. The method of claim 11 wherein said step of receiving a first set of hash codes includes the step of:
receiving a first set of hash codes from a mass e-mailer, each of which represents an e-mail address.
13. The method of claim 11 further comprised of the steps of:
i) sorting said first set of hash codes into a first ordered list of hash codes;
ii) sorting said second set of hash codes into a second ordered list of hash codes; and
iii) creating a third set of hash codes by the steps of:
copying entries of said first ordered list of hash codes into a third set of hash codes that do not exist in said second ordered list of hash codes.
14. The method of claim 11 further including the step of: sending said third set of encoded e-mail address to an e-mail mass mailer via a data network.
15. A method of controlling electronic mail (e-mail) message transmission over a data network comprised of:
receiving a first set of hash codes from an e-mail mass mailer, said first set of hash codes being received via said data network;
comparing said first set of hash codes to a second set of hash codes; and
removing from said first set of hash codes, hash codes that are in said second set of hash codes to yield a third set of hash codes to which an e-mail message may be sent.
16. The method of claim 16 further comprised of the step of: sending said third set of hash codes back to said e-mail mass mailer.
17. The method of claim 16 wherein said first and second sets of hash codes are comprised of alpha-numeric characters and are of the same length.
18. A method of controlling electronic mail (e-mail) message transmission over a data network comprised of:
receiving a first set of hash codes from an e-mail mass mailer, said first set of hash codes being received via said data network;
comparing said first set of hash codes to a second set of hash codes; and
creating a third set of hash codes that is comprised of hash codes in said first set of hash codes that are not in said second set of hash codes.
19. The method of claim 19 further comprised of the step of: sending said third set of hash codes back to said e-mail mass mailer.
20. The method of claim 19 wherein said first and second sets of hash codes are comprised of alpha-numeric characters and are of the same length.
21. A method of controlling electronic mail (e-mail) message transmission over a network comprised of:
receiving a first set of hash coded e-mail addresses;
compiling a second set of hash coded e-mail addresses to which an e-mail message should not be sent;
identifying hash coded e-mail addresses in said first set of hash coded e-mail addresses that do not appear in said second set of hash coded e-mail addresses; and
removing from said first set of hash coded e-mail addresses, each hash coded e-mail address that is not in said second set of hash coded e-mail addresses thereby yielding a third set of hash coded e-mail addresses to which an e-mail message may be sent;
22. The method of claim 22 further including the step of: sending said third set of hash coded e-mail address to an e-mail sender via a data network.
23. A method of sending an electronic mail (e-mail) message to a plurality of e-mail addresses comprised of:
hash coding a first list of e-mail addresses to yield a first list of hash coded e-mail addresses;
transmitting said first list of hash coded e-mail addresses to an e-mail address filtration service provider.
24. An apparatus for controlling electronic mail (e-mail) message transmission over a network comprised of:
a computer, operatively coupled to a data network and capable of receiving there from, a first set of encoded e-mail addresses;
a first memory device, operatively coupled to said computer, said first memory device storing a second set of encoded e-mail addresses to which an e-mail message should not be sent; and
said first memory device also storing program instructions which when executed cause said computer to:
store in said first memory device, at least part of said first set of encoded e-mail addresses;
remove from said first set of encoded e-mail addresses stored in said memory, each encoded e-mail address in said second set of encoded e-mail addresses that is also in said first set of encoded e-mail addresses thereby yielding a third set of encoded e-mail addresses, said third set of encoded e-mail addresses being encoded e-mail addresses to which an e-mail message may be sent; and
store at least part of said third set of encoded e-mail addresses in said memory.
25. The apparatus of claim 25 further including a first memory device that stores program instructions which when executed cause said computer to sort said first set of encoded e-mail addresses.
26. An apparatus for controlling electronic mail (e-mail) message transmission over a network comprised of:
a computer, operatively coupled to a data network and capable of receiving there from, a first set of hash codes, said computer also being capable of executing program instructions;
a first memory device, operatively coupled to said computer, said first memory device storing a second set of hash codes; and
said first memory device also storing program instructions which when executed cause said computer to:
store in said first memory device, at least part of said first set of hash codes;
remove from said first set of hash codes, each hash code in said second set of hash codes, yielding a third set of hash codes, said third set of hash codes representing e-mail addresses to which an e-mail message may be sent; and
store at least part of said third set of encoded e-mail addresses in said memory.
27. The apparatus of claim 27 further including a first memory device that stores program instructions which when executed cause said computer to compare e-mail addresses that have been encoded using a hash code algorithm.
28. The apparatus of claim 27 further including a memory device that stores program instructions which when executed cause said computer to sort hash codes that represent e-mail addresses.
29. The apparatus of claim 27 further including a memory device that stores program instructions which when executed cause said computer to hash code a variable-length string of an e-mail address into a fixed-length string of alpha-numeric characters.
30. The method of claim 1 further including the step of: prior to the step of receiving said first set of encoded e-mail addresses, specifying an e-mail address domain name and purging from said first set of encoded e-mail addresses, all e-mail addresses having said domain name.
31. The method of claim 7 further including the step of: prior to the step of receiving said first set of hash codes, specifying an e-mail address domain name and purging all e-mail addresses having said domain name.
US10/600,249 2003-06-20 2003-06-20 Apparatus and method for precluding e-mail distribution Abandoned US20050005164A1 (en)

Priority Applications (3)

Application Number Priority Date Filing Date Title
US10/600,249 US20050005164A1 (en) 2003-06-20 2003-06-20 Apparatus and method for precluding e-mail distribution
PCT/US2004/019813 WO2004114092A2 (en) 2003-06-20 2004-06-21 Apparatus and method for precluding e-mail distribution
US12/258,506 US8429235B2 (en) 2003-06-20 2008-10-27 Apparatus and method for precluding e-mail distribution

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US10/600,249 US20050005164A1 (en) 2003-06-20 2003-06-20 Apparatus and method for precluding e-mail distribution

Related Child Applications (1)

Application Number Title Priority Date Filing Date
US12/258,506 Continuation US8429235B2 (en) 2003-06-20 2008-10-27 Apparatus and method for precluding e-mail distribution

Publications (1)

Publication Number Publication Date
US20050005164A1 true US20050005164A1 (en) 2005-01-06

Family

ID=33539412

Family Applications (2)

Application Number Title Priority Date Filing Date
US10/600,249 Abandoned US20050005164A1 (en) 2003-06-20 2003-06-20 Apparatus and method for precluding e-mail distribution
US12/258,506 Active 2025-09-24 US8429235B2 (en) 2003-06-20 2008-10-27 Apparatus and method for precluding e-mail distribution

Family Applications After (1)

Application Number Title Priority Date Filing Date
US12/258,506 Active 2025-09-24 US8429235B2 (en) 2003-06-20 2008-10-27 Apparatus and method for precluding e-mail distribution

Country Status (2)

Country Link
US (2) US20050005164A1 (en)
WO (1) WO2004114092A2 (en)

Cited By (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030018808A1 (en) * 2001-03-26 2003-01-23 Lev Brouk System and method for mapping of services
US20030041178A1 (en) * 2001-03-26 2003-02-27 Lev Brouk System and method for routing messages between applications
US20030053459A1 (en) * 2001-03-26 2003-03-20 Lev Brouk System and method for invocation of services
US20050080914A1 (en) * 2003-10-14 2005-04-14 Grand Central Communications, Inc., A Delaware Corporation Policy management in an interoperability network
US20050086297A1 (en) * 2003-10-16 2005-04-21 Grand Central Communications, Inc. Managing virtual business instances within a computer network
US20050198579A1 (en) * 2004-03-04 2005-09-08 International Business Machines Corporation Method and apparatus to avoid duplicate electronic mail documents resulting from forwarding of an electronic mail document
US20050228863A1 (en) * 2004-04-07 2005-10-13 Grand Central Communications, Inc. Techniques for providing interoperability as a service
US20050234928A1 (en) * 2004-03-23 2005-10-20 Grand Central Communications, Inc. Synchronous interface to asynchronous processes
US20050283461A1 (en) * 2004-06-02 2005-12-22 Jorg-Stefan Sell Method and apparatus for managing electronic messages
US20060020795A1 (en) * 2004-06-25 2006-01-26 Gasparini Louis A System and method for validating e-mail messages
US20060262867A1 (en) * 2005-05-17 2006-11-23 Ntt Docomo, Inc. Data communications system and data communications method
US20070266098A1 (en) * 2005-05-05 2007-11-15 Raz Gordon System and method for emailing an entity using its non-email attributes
WO2007135145A2 (en) * 2006-05-22 2007-11-29 Nokia Siemens Networks Gmbh & Co. Kg Method and computer programme product for generation of a user-specific transmission exclusion list and method for forwarding messages in a decentralised communication system
US20080016242A1 (en) * 2001-03-30 2008-01-17 Minor Ventures, Llc Apparatus and methods for managing messages sent between services
US7610627B1 (en) * 2004-01-23 2009-10-27 Acxiom Corporation Secure data exchange technique
US20100054600A1 (en) * 2008-08-28 2010-03-04 Microsoft Corporation Tagging Images With Labels
US20100054601A1 (en) * 2008-08-28 2010-03-04 Microsoft Corporation Image Tagging User Interface
US7721328B2 (en) 2004-10-01 2010-05-18 Salesforce.Com Inc. Application identity design
US20110113249A1 (en) * 2009-11-12 2011-05-12 Roy Gelbard Method and system for sharing trusted contact information
US7974882B1 (en) * 2005-09-16 2011-07-05 Direct Resources Solutions, LLC Method and system for creating a comprehensive undeliverable-as-addressed database for the improvement of the accuracy of marketing mailing lists
US20120173630A1 (en) * 2011-01-03 2012-07-05 Tara Chand Singhal Systems and methods for creating and sustaining cause-based social communities using wireless mobile devices and the global computer network
US20130166657A1 (en) * 2011-12-27 2013-06-27 Saied Tadayon E-mail Systems
US8914883B2 (en) * 2013-05-03 2014-12-16 Fortinet, Inc. Securing email communications
US9645712B2 (en) 2004-10-01 2017-05-09 Grand Central Communications, Inc. Multiple stakeholders for a single business process
US9785956B2 (en) 2013-09-26 2017-10-10 Revimedia, Inc. System and method of enhancing a lead exchange process
US9948644B2 (en) 2001-03-26 2018-04-17 Salesforce.Com, Inc. Routing messages between applications
CN111049736A (en) * 2019-12-23 2020-04-21 上海澄潭网络科技有限公司 Method and equipment for determining mail conversation
US11151331B1 (en) 2020-05-13 2021-10-19 International Business Machines Corporation Layered neural networks to evaluate communication distribution
US20230198769A1 (en) * 2021-12-16 2023-06-22 Nai, Inc. Opt-out systems and methods for tailored advertising

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8301702B2 (en) * 2004-01-20 2012-10-30 Cloudmark, Inc. Method and an apparatus to screen electronic communications
US20130024520A1 (en) * 2011-07-18 2013-01-24 James Siminoff Systems And Methods For Managing Commercial Emails
US11151515B2 (en) * 2012-07-31 2021-10-19 Varonis Systems, Inc. Email distribution list membership governance method and system
US10057250B2 (en) * 2013-05-14 2018-08-21 Kara Partners Llc Technologies for enhancing computer security
US9237121B1 (en) 2015-03-24 2016-01-12 OTC Systems, Ltd. Commercial email management system
WO2019070689A2 (en) * 2017-10-02 2019-04-11 Pebblepost, Inc. Prospect selection for direct mail
US20230004725A1 (en) * 2021-06-30 2023-01-05 International Business Machines Corporation Generating targeted message distribution lists

Citations (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5864684A (en) * 1996-05-22 1999-01-26 Sun Microsystems, Inc. Method and apparatus for managing subscriptions to distribution lists
US5937162A (en) * 1995-04-06 1999-08-10 Exactis.Com, Inc. Method and apparatus for high volume e-mail delivery
US5999932A (en) * 1998-01-13 1999-12-07 Bright Light Technologies, Inc. System and method for filtering unsolicited electronic mail messages using data matching and heuristic processing
US6052709A (en) * 1997-12-23 2000-04-18 Bright Light Technologies, Inc. Apparatus and method for controlling delivery of unsolicited electronic mail
US6161130A (en) * 1998-06-23 2000-12-12 Microsoft Corporation Technique which utilizes a probabilistic classifier to detect "junk" e-mail by automatically updating a training and re-training the classifier based on the updated training set
US6167434A (en) * 1998-07-15 2000-12-26 Pang; Stephen Y. Computer code for removing junk e-mail messages
US6321267B1 (en) * 1999-11-23 2001-11-20 Escom Corporation Method and apparatus for filtering junk email
US6324569B1 (en) * 1998-09-23 2001-11-27 John W. L. Ogilvie Self-removing email verified or designated as such by a message distributor for the convenience of a recipient
US6330590B1 (en) * 1999-01-05 2001-12-11 William D. Cotten Preventing delivery of unwanted bulk e-mail
US20020059385A1 (en) * 2000-07-29 2002-05-16 Hai Lin Method of anti-spam
US6393465B2 (en) * 1997-11-25 2002-05-21 Nixmail Corporation Junk electronic mail detector and eliminator
US20020061289A1 (en) * 2000-10-04 2002-05-23 Boman Bruce M. Stem cell-based methods for preventing and treating tumor
US20020143879A1 (en) * 2001-03-28 2002-10-03 Peter Sommerer Method and system for automatically updating electronic mail address information within an electronic mail address database
US6480885B1 (en) * 1998-09-15 2002-11-12 Michael Olivier Dynamically matching users for group communications based on a threshold degree of matching of sender and recipient predetermined acceptance criteria
US6484197B1 (en) * 1998-11-07 2002-11-19 International Business Machines Corporation Filtering incoming e-mail
US20020184315A1 (en) * 2001-03-16 2002-12-05 Earnest Jerry Brett Redundant email address detection and capture system
US6493007B1 (en) * 1998-07-15 2002-12-10 Stephen Y. Pang Method and device for removing junk e-mail messages
US20030009698A1 (en) * 2001-05-30 2003-01-09 Cascadezone, Inc. Spam avenger
US20030009480A1 (en) * 2001-06-18 2003-01-09 Microsoft Corporation Selective file purging for delete or rename
US6546416B1 (en) * 1998-12-09 2003-04-08 Infoseek Corporation Method and system for selectively blocking delivery of bulk electronic mail
US6675153B1 (en) * 1999-07-06 2004-01-06 Zix Corporation Transaction authorization system
US6760752B1 (en) * 1999-06-28 2004-07-06 Zix Corporation Secure transmission system
US20040148506A1 (en) * 2003-01-23 2004-07-29 Prince Matthew B. Method and apparatus for a non-revealing do-not-contact list system
US20060129629A1 (en) * 2002-12-20 2006-06-15 Nippon Telegraph And Telephone Corporation Communication method, communication system, relay system, communication program, program for communication system, mail distribution system, mail distribution method, and mail distribution program
US7143189B2 (en) * 2001-01-24 2006-11-28 Microsoft Corporation System and method for incremental and reversible data migration and feature deployment

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI228179B (en) * 1999-09-24 2005-02-21 Toshiba Corp Process and device for producing photonic crystal, and optical element
US20030061289A1 (en) 2001-09-24 2003-03-27 International Business Machines Corporation Apparatus and method of filtering out e-mail addresses from an e-mail distribution list

Patent Citations (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5937162A (en) * 1995-04-06 1999-08-10 Exactis.Com, Inc. Method and apparatus for high volume e-mail delivery
US5864684A (en) * 1996-05-22 1999-01-26 Sun Microsystems, Inc. Method and apparatus for managing subscriptions to distribution lists
US6393465B2 (en) * 1997-11-25 2002-05-21 Nixmail Corporation Junk electronic mail detector and eliminator
US6052709A (en) * 1997-12-23 2000-04-18 Bright Light Technologies, Inc. Apparatus and method for controlling delivery of unsolicited electronic mail
US5999932A (en) * 1998-01-13 1999-12-07 Bright Light Technologies, Inc. System and method for filtering unsolicited electronic mail messages using data matching and heuristic processing
US6161130A (en) * 1998-06-23 2000-12-12 Microsoft Corporation Technique which utilizes a probabilistic classifier to detect "junk" e-mail by automatically updating a training and re-training the classifier based on the updated training set
US6167434A (en) * 1998-07-15 2000-12-26 Pang; Stephen Y. Computer code for removing junk e-mail messages
US6493007B1 (en) * 1998-07-15 2002-12-10 Stephen Y. Pang Method and device for removing junk e-mail messages
US6480885B1 (en) * 1998-09-15 2002-11-12 Michael Olivier Dynamically matching users for group communications based on a threshold degree of matching of sender and recipient predetermined acceptance criteria
US6324569B1 (en) * 1998-09-23 2001-11-27 John W. L. Ogilvie Self-removing email verified or designated as such by a message distributor for the convenience of a recipient
US6484197B1 (en) * 1998-11-07 2002-11-19 International Business Machines Corporation Filtering incoming e-mail
US6546416B1 (en) * 1998-12-09 2003-04-08 Infoseek Corporation Method and system for selectively blocking delivery of bulk electronic mail
US6330590B1 (en) * 1999-01-05 2001-12-11 William D. Cotten Preventing delivery of unwanted bulk e-mail
US6760752B1 (en) * 1999-06-28 2004-07-06 Zix Corporation Secure transmission system
US6675153B1 (en) * 1999-07-06 2004-01-06 Zix Corporation Transaction authorization system
US6321267B1 (en) * 1999-11-23 2001-11-20 Escom Corporation Method and apparatus for filtering junk email
US20020059385A1 (en) * 2000-07-29 2002-05-16 Hai Lin Method of anti-spam
US20020061289A1 (en) * 2000-10-04 2002-05-23 Boman Bruce M. Stem cell-based methods for preventing and treating tumor
US7143189B2 (en) * 2001-01-24 2006-11-28 Microsoft Corporation System and method for incremental and reversible data migration and feature deployment
US20020184315A1 (en) * 2001-03-16 2002-12-05 Earnest Jerry Brett Redundant email address detection and capture system
US20020143879A1 (en) * 2001-03-28 2002-10-03 Peter Sommerer Method and system for automatically updating electronic mail address information within an electronic mail address database
US20030009698A1 (en) * 2001-05-30 2003-01-09 Cascadezone, Inc. Spam avenger
US20030009480A1 (en) * 2001-06-18 2003-01-09 Microsoft Corporation Selective file purging for delete or rename
US20060129629A1 (en) * 2002-12-20 2006-06-15 Nippon Telegraph And Telephone Corporation Communication method, communication system, relay system, communication program, program for communication system, mail distribution system, mail distribution method, and mail distribution program
US20040148506A1 (en) * 2003-01-23 2004-07-29 Prince Matthew B. Method and apparatus for a non-revealing do-not-contact list system

Cited By (77)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7516191B2 (en) 2001-03-26 2009-04-07 Salesforce.Com, Inc. System and method for invocation of services
US20030053459A1 (en) * 2001-03-26 2003-03-20 Lev Brouk System and method for invocation of services
US9491126B2 (en) 2001-03-26 2016-11-08 Salesforce.Com, Inc. Routing messages between applications
US7689711B2 (en) 2001-03-26 2010-03-30 Salesforce.Com, Inc. System and method for routing messages between applications
US20030018808A1 (en) * 2001-03-26 2003-01-23 Lev Brouk System and method for mapping of services
US8639843B2 (en) 2001-03-26 2014-01-28 Salesforce.Com, Inc. System and method for routing messages between applications
US20030041178A1 (en) * 2001-03-26 2003-02-27 Lev Brouk System and method for routing messages between applications
US9948644B2 (en) 2001-03-26 2018-04-17 Salesforce.Com, Inc. Routing messages between applications
US9467405B2 (en) 2001-03-26 2016-10-11 Salesforce.Com, Inc. Routing messages between applications
US9588828B2 (en) 2001-03-26 2017-03-07 Salesforce.Com, Inc. System and method for routing messages between applications
US7788399B2 (en) 2001-03-26 2010-08-31 Salesforce.Com, Inc. System and method for mapping of services
US9037726B2 (en) 2001-03-30 2015-05-19 Salesforce.Com, Inc. Apparatus and methods for managing messages sent between services
US20080016242A1 (en) * 2001-03-30 2008-01-17 Minor Ventures, Llc Apparatus and methods for managing messages sent between services
US11070626B2 (en) 2001-03-30 2021-07-20 Salesforce.Com, Inc. Managing messages sent between services
US8453196B2 (en) * 2003-10-14 2013-05-28 Salesforce.Com, Inc. Policy management in an interoperability network
US20050080914A1 (en) * 2003-10-14 2005-04-14 Grand Central Communications, Inc., A Delaware Corporation Policy management in an interoperability network
US9473536B2 (en) 2003-10-14 2016-10-18 Salesforce.Com, Inc. Method, system, and computer program product for facilitating communication in an interoperability network
US9916549B2 (en) 2003-10-16 2018-03-13 Salesforce.Com, Inc. Managing virtual business instances within a computer network
US9338214B2 (en) 2003-10-16 2016-05-10 Salesforce.Com, Inc. Managing virtual business instances within a computer network
US7904882B2 (en) 2003-10-16 2011-03-08 Salesforce.Com, Inc. Managing virtual business instances within a computer network
US10489730B2 (en) 2003-10-16 2019-11-26 Salesforce.Com, Inc. Managing virtual business instances within a computer network
US20050086297A1 (en) * 2003-10-16 2005-04-21 Grand Central Communications, Inc. Managing virtual business instances within a computer network
US8412941B2 (en) 2004-01-23 2013-04-02 Acxiom Corporation Secure data exchange technique
US7992210B2 (en) 2004-01-23 2011-08-02 Acxicom Corporation Secure data exchange technique
US20100011205A1 (en) * 2004-01-23 2010-01-14 Acxiom Corporation Secure data exchange technique
US20130212697A1 (en) * 2004-01-23 2013-08-15 Acxiom Corporation Secure data exchange technique
US7610627B1 (en) * 2004-01-23 2009-10-27 Acxiom Corporation Secure data exchange technique
US9104883B2 (en) * 2004-01-23 2015-08-11 Acxiom Corporation Secure data exchange technique
US9300636B2 (en) * 2004-01-23 2016-03-29 Acxiom Corporation Secure data exchange technique
US20050198579A1 (en) * 2004-03-04 2005-09-08 International Business Machines Corporation Method and apparatus to avoid duplicate electronic mail documents resulting from forwarding of an electronic mail document
US10516700B2 (en) 2004-03-23 2019-12-24 Salesforce.Com, Inc. Synchronous interface to asynchronous processes
US20050234928A1 (en) * 2004-03-23 2005-10-20 Grand Central Communications, Inc. Synchronous interface to asynchronous processes
US9674226B2 (en) 2004-03-23 2017-06-06 Salesforce.Com, Inc. Synchronous interface to asynchronous processes
US8260849B2 (en) 2004-03-23 2012-09-04 Salesforce.Com, Inc. Synchronous interface to asynchronous processes
US9032023B2 (en) 2004-03-23 2015-05-12 Salesforce.Com, Inc. Synchronous interface to asynchronous processes
US20100223301A1 (en) * 2004-03-23 2010-09-02 Salesforce.Com, Inc. Synchronous Interface to Asynchronous Processes
US8478818B2 (en) 2004-03-23 2013-07-02 Salesforce.Com, Inc. Synchronous interface to asynchronous processes
US7739351B2 (en) 2004-03-23 2010-06-15 Salesforce.Com, Inc. Synchronous interface to asynchronous processes
US20050228863A1 (en) * 2004-04-07 2005-10-13 Grand Central Communications, Inc. Techniques for providing interoperability as a service
US8073822B2 (en) * 2004-06-02 2011-12-06 Open Text Software Gmbh Method and apparatus for managing electronic messages
US20050283461A1 (en) * 2004-06-02 2005-12-22 Jorg-Stefan Sell Method and apparatus for managing electronic messages
US20060020795A1 (en) * 2004-06-25 2006-01-26 Gasparini Louis A System and method for validating e-mail messages
US7783883B2 (en) * 2004-06-25 2010-08-24 Emc Corporation System and method for validating e-mail messages
US9800586B2 (en) 2004-10-01 2017-10-24 Salesforce.Com, Inc. Secure identity federation for non-federated systems
US11941230B2 (en) 2004-10-01 2024-03-26 Salesforce, Inc. Multiple stakeholders for a single business process
US7721328B2 (en) 2004-10-01 2010-05-18 Salesforce.Com Inc. Application identity design
US11042271B2 (en) 2004-10-01 2021-06-22 Salesforce.Com, Inc. Multiple stakeholders for a single business process
US10333941B2 (en) 2004-10-01 2019-06-25 Salesforce.Com, Inc. Secure identity federation for non-federated systems
US8108919B2 (en) 2004-10-01 2012-01-31 Salesforce.Com, Inc. Application identity design
US20100192204A1 (en) * 2004-10-01 2010-07-29 Salesforce.Com, Inc. Application Identity Design
US9645712B2 (en) 2004-10-01 2017-05-09 Grand Central Communications, Inc. Multiple stakeholders for a single business process
US9450946B2 (en) 2004-10-01 2016-09-20 Salesforce.Com, Inc. Secure identity federation for non-federated systems
US20070266098A1 (en) * 2005-05-05 2007-11-15 Raz Gordon System and method for emailing an entity using its non-email attributes
US8001193B2 (en) * 2005-05-17 2011-08-16 Ntt Docomo, Inc. Data communications system and data communications method for detecting unsolicited communications
US20060262867A1 (en) * 2005-05-17 2006-11-23 Ntt Docomo, Inc. Data communications system and data communications method
US7974882B1 (en) * 2005-09-16 2011-07-05 Direct Resources Solutions, LLC Method and system for creating a comprehensive undeliverable-as-addressed database for the improvement of the accuracy of marketing mailing lists
WO2007135145A3 (en) * 2006-05-22 2008-02-14 Nokia Siemens Networks Gmbh Method and computer programme product for generation of a user-specific transmission exclusion list and method for forwarding messages in a decentralised communication system
WO2007135145A2 (en) * 2006-05-22 2007-11-29 Nokia Siemens Networks Gmbh & Co. Kg Method and computer programme product for generation of a user-specific transmission exclusion list and method for forwarding messages in a decentralised communication system
US20100054600A1 (en) * 2008-08-28 2010-03-04 Microsoft Corporation Tagging Images With Labels
US9020183B2 (en) * 2008-08-28 2015-04-28 Microsoft Technology Licensing, Llc Tagging images with labels
US8396246B2 (en) * 2008-08-28 2013-03-12 Microsoft Corporation Tagging images with labels
US8867779B2 (en) 2008-08-28 2014-10-21 Microsoft Corporation Image tagging user interface
US20100054601A1 (en) * 2008-08-28 2010-03-04 Microsoft Corporation Image Tagging User Interface
US20110113249A1 (en) * 2009-11-12 2011-05-12 Roy Gelbard Method and system for sharing trusted contact information
US8751808B2 (en) * 2009-11-12 2014-06-10 Roy Gelbard Method and system for sharing trusted contact information
US20120173630A1 (en) * 2011-01-03 2012-07-05 Tara Chand Singhal Systems and methods for creating and sustaining cause-based social communities using wireless mobile devices and the global computer network
US11818090B2 (en) * 2011-01-03 2023-11-14 Tara Chand Singhal Systems and methods for creating and sustaining cause-based social communities using wireless mobile devices and the global computer network
US20130166657A1 (en) * 2011-12-27 2013-06-27 Saied Tadayon E-mail Systems
US9521114B2 (en) 2013-05-03 2016-12-13 Fortinet, Inc. Securing email communications
US8914883B2 (en) * 2013-05-03 2014-12-16 Fortinet, Inc. Securing email communications
US9130989B2 (en) 2013-05-03 2015-09-08 Fortinet, Inc. Securing email communications
US9413716B2 (en) 2013-05-03 2016-08-09 Fortinet, Inc. Securing email communications
US9785956B2 (en) 2013-09-26 2017-10-10 Revimedia, Inc. System and method of enhancing a lead exchange process
US11182805B2 (en) 2013-09-26 2021-11-23 Revimedia, Inc. System and method of enhancing a lead exchange process
CN111049736A (en) * 2019-12-23 2020-04-21 上海澄潭网络科技有限公司 Method and equipment for determining mail conversation
US11151331B1 (en) 2020-05-13 2021-10-19 International Business Machines Corporation Layered neural networks to evaluate communication distribution
US20230198769A1 (en) * 2021-12-16 2023-06-22 Nai, Inc. Opt-out systems and methods for tailored advertising

Also Published As

Publication number Publication date
US8429235B2 (en) 2013-04-23
WO2004114092A2 (en) 2004-12-29
WO2004114092A3 (en) 2005-11-03
US20090132670A1 (en) 2009-05-21

Similar Documents

Publication Publication Date Title
US8429235B2 (en) Apparatus and method for precluding e-mail distribution
US7406506B1 (en) Identification and filtration of digital communications
US6460050B1 (en) Distributed content identification system
US6842773B1 (en) Processing of textual electronic communication distributed in bulk
US7089241B1 (en) Classifier tuning based on data similarities
US6167435A (en) Double opt-in™ method and system for verifying subscriptions to information distribution services
US9444826B2 (en) Method and system for filtering communication
US20060095966A1 (en) Method of detecting, comparing, blocking, and eliminating spam emails
US7149778B1 (en) Unsolicited electronic mail reduction
US8429178B2 (en) Reliability of duplicate document detection algorithms
US7483951B2 (en) Method and system for selectively blocking delivery of electronic mail
CN100527117C (en) Method and system for determining information in system containing multiple modules against offal mail
US20060149820A1 (en) Detecting spam e-mail using similarity calculations
US20040181462A1 (en) Electronic communication service
US20060265498A1 (en) Detection and prevention of spam
US20050015626A1 (en) System and method for identifying and filtering junk e-mail messages or spam based on URL content
US20040064734A1 (en) Electronic message system
WO2002069227A1 (en) Method and apparatus for dynamic prioritization of electronic mail messages
WO1999032985A1 (en) E-mail filter and method thereof
JP2000353133A (en) System and method for disturbing undesirable transmission or reception of electronic message
US8301702B2 (en) Method and an apparatus to screen electronic communications
US20050044160A1 (en) Method and software product for identifying unsolicited emails
US7624274B1 (en) Decreasing the fragility of duplicate document detecting algorithms
KR20120130778A (en) Method of categorizing messages received by a user of a company social network
Lazzari et al. Cafe-collaborative agents for filtering e-mails

Legal Events

Date Code Title Description
AS Assignment

Owner name: QUINSTREET, INC., CALIFORNIA

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:SYIEK, BRONWYN;BHANAP, NINA;GOWDA, RAKESH;AND OTHERS;REEL/FRAME:014226/0694

Effective date: 20030613

AS Assignment

Owner name: COMERICA BANK, CALIFORNIA

Free format text: INTELLECTUAL PROPERTY SECURITY AGREEMENT;ASSIGNOR:QUINSTREET, INC.;REEL/FRAME:018299/0335

Effective date: 20060831

STCB Information on status: application discontinuation

Free format text: ABANDONED -- FAILURE TO RESPOND TO AN OFFICE ACTION