cvs: php4 /pear/Mail RFC822.php

From: Date: Sat, 03 Mar 2001 22:06:42 +0000
Subject: cvs: php4 /pear/Mail RFC822.php
Groups: php.cvs 
Request: Send a blank email to php-cvs+get-4379@lists.php.net to get a copy of this message
chagenbu Sat Mar 3 14:06:42 2001 EDT Modified files: /php4/pear/Mail RFC822.php Log: Add a validate parameter that allows you to turn off validation of atoms. This lets you pass in an address list containing non-mime-encoded addresses, for example, and get back a correctly split-up list that you can then encode. Index: php4/pear/Mail/RFC822.php diff -u php4/pear/Mail/RFC822.php:1.3 php4/pear/Mail/RFC822.php:1.4 --- php4/pear/Mail/RFC822.php:1.3 Mon Feb 19 19:03:21 2001 +++ php4/pear/Mail/RFC822.php Sat Mar 3 14:06:42 2001 @@ -22,7 +22,7 @@ * * @author Richard Heyes <richard.heyes@heyes-computing.net> * @author Chuck Hagenbuch <chuck@horde.org> - * @version $Revision: 1.3 $ + * @version $Revision: 1.4 $ */ class Mail_RFC822 { @@ -30,6 +30,7 @@ var $address = null; var $default_host = 'localhost'; var $nestGroups = true; + var $validate = true; var $addresses = array(); var $structure = array(); var $error = null; @@ -46,12 +47,14 @@ * @param $address The address(es) to validate. * @param $default_host (Optional) Default domain/host etc. If not supplied, will be set to localhost. * @param $nest_groups (Optional) Whether to return the structure with groups nested for easier viewing. + * @param $validate (Optional) Whether to validate atoms. Turn this off if you need to run addresses through before encoding the personal names, for instance. */ - function Mail_RFC822($address = null, $default_host = null, $nest_groups = null) + function Mail_RFC822($address = null, $default_host = null, $nest_groups = null, $validate = null) { if (isset($address)) $this->address = $address; if (isset($default_host)) $this->default_host = $default_host; if (isset($nest_groups)) $this->nestGroups = $nest_groups; + if (isset($validate)) $this->validate = $validate; } @@ -63,17 +66,19 @@ * @param $address The address(es) to validate. * @param $default_host (Optional) Default domain/host etc. * @param $nest_groups (Optional) Whether to return the structure with groups nested for easier viewing. + * @param $validate (Optional) Whether to validate atoms. Turn this off if you need to run addresses through before encoding the personal names, for instance. */ - function parseAddressList($address = null, $default_host = null, $nest_groups = null) + function parseAddressList($address = null, $default_host = null, $nest_groups = null, $validate = null) { if (!isset($this->mailRFC822)) { - $obj = new Mail_RFC822($address, $default_host, $nest_groups); + $obj = new Mail_RFC822($address, $default_host, $nest_groups, $validate); return $obj->parseAddressList(); } if (isset($address)) $this->address = $address; if (isset($default_host)) $this->default_host = $default_host; if (isset($nest_groups)) $this->nestGroups = $nest_groups; + if (isset($validate)) $this->validate = $validate; $this->structure = array(); $this->addresses = array(); @@ -411,22 +416,35 @@ * Function to validate an atom which from rfc822 is: * atom = 1*<any CHAR except specials, SPACE and CTLs> * + * If validation ($this->validate) has been turned off, then + * validateAtom() doesn't actually check anything. This is so that you + * can split a list of addresses up before encoding personal names + * (umlauts, etc.), for example. + * * @access private * @param $atom The string to check. */ function validateAtom($atom) { + if (!$this->validate) { + // Validation has been turned off; assume the atom is okay. + return true; + } + // Check for any char from ASCII 0 - ASCII 127 - if (!preg_match('/^[\\x00-\\x7E]+$/i', $atom, $matches)) + if (!preg_match('/^[\\x00-\\x7E]+$/i', $atom, $matches)) { return false; + } // Check for specials: - if (preg_match('/[][()<>@,;\\:". ]/', $atom)) + if (preg_match('/[][()<>@,;\\:". ]/', $atom)) { return false; + } // Check for control characters (ASCII 0-31): - if (preg_match('/[\\x00-\\x1F]+/', $atom)) + if (preg_match('/[\\x00-\\x1F]+/', $atom)) { return false; + } return true; }

« previous php.cvs (#4379) next »