public static function protect_emailaddress($emailaddress, $catchall_address=null) {
	if (empty($catchall_address)) {
		if (empty(self::$config)) {
			self::load_config();
		}
		
		$catchall_address = self::$config['from'];
	}
	
	$recipient_name = null;
	if (is_array($emailaddress)) {
		$recipient_name = current($emailaddress);
		$emailaddress   = key($emailaddress);
	}
	
	if (self::validate($emailaddress) == false) {
		$exception = bootstrap::get_library('exception');
		throw new $exception('can not convert invalid email address');
	}
	
	
	$emailaddress_key = preg_replace('{[^a-zA-Z0-9_]}', '_', $emailaddress);
	$emailaddress = str_replace('@', '+'.$emailaddress_key.'@', $catchall_address);
	
	if ($recipient_name) {
		$emailaddress = array($emailaddress => $recipient_name);
	}
	
	return $emailaddress;
}