fixed bug #3279 - removed iso-8859-1 from $this->_base_charsets, and altered _get_encoding() to check more broadly for 7bit character sets before deciding whether to set the encoding to 7-bit or 8-bit.
diff --git a/system/libraries/Email.php b/system/libraries/Email.php
index 6136a05..25e5963 100644
--- a/system/libraries/Email.php
+++ b/system/libraries/Email.php
@@ -36,13 +36,13 @@
 	var	$smtp_pass		= "";		// SMTP Password

 	var	$smtp_port		= "25";		// SMTP Port

 	var	$smtp_timeout	= 5;		// SMTP Timeout in seconds

-	var	$wordwrap		= TRUE;		// true/false  Turns word-wrap on/off

+	var	$wordwrap		= TRUE;		// TRUE/FALSE  Turns word-wrap on/off

 	var	$wrapchars		= "76";		// Number of characters to wrap at.

 	var	$mailtype		= "text";	// text/html  Defines email formatting

 	var	$charset		= "utf-8";	// Default char set: iso-8859-1 or us-ascii

 	var	$multipart		= "mixed";	// "mixed" (in the body) or "related" (separate)

 	var $alt_message	= '';		// Alternative message for HTML emails

-	var	$validate		= FALSE;	// true/false.  Enables email validation

+	var	$validate		= FALSE;	// TRUE/FALSE.  Enables email validation

 	var	$priority		= "3";		// Default priority (1 - 5)

 	var	$newline		= "\n";		// Default newline. "\r\n" or "\n" (Use "\r\n" to comply with RFC 822)

 

@@ -50,8 +50,8 @@
 									// even on the receiving end think they need to muck with CRLFs, so using "\n", while

 									// distasteful, is the only thing that seems to work for all environments.

 

-	var	$bcc_batch_mode	= FALSE;	// true/false  Turns on/off Bcc batch feature

-	var	$bcc_batch_size	= 200;		// If bcc_batch_mode = true, sets max number of Bccs in each batch

+	var	$bcc_batch_mode	= FALSE;	// TRUE/FALSE  Turns on/off Bcc batch feature

+	var	$bcc_batch_size	= 200;		// If bcc_batch_mode = TRUE, sets max number of Bccs in each batch

 	var	$_subject		= "";

 	var	$_body			= "";

 	var	$_finalbody		= "";

@@ -73,7 +73,7 @@
 	var	$_attach_type	= array();

 	var	$_attach_disp	= array();

 	var	$_protocols		= array('mail', 'sendmail', 'smtp');

-	var	$_base_charsets	= array('iso-8859-1', 'us-ascii');

+	var	$_base_charsets	= array('us-ascii', 'iso-2022-');	// 7-bit charsets (excluding language suffix)

 	var	$_bit_depths	= array('7bit', '8bit');

 	var	$_priorities	= array('1 (Highest)', '2 (High)', '3 (Normal)', '4 (Low)', '5 (Lowest)');	

 

@@ -282,7 +282,7 @@
 	{

 		if ($limit != '' && is_numeric($limit))

 		{

-			$this->bcc_batch_mode = true;

+			$this->bcc_batch_mode = TRUE;

 			$this->bcc_batch_size = $limit;

 		}

 

@@ -538,12 +538,12 @@
 	 * @param	bool

 	 * @return	string

 	 */	

-	function _get_protocol($return = true)

+	function _get_protocol($return = TRUE)

 	{

 		$this->protocol = strtolower($this->protocol);

 		$this->protocol = ( ! in_array($this->protocol, $this->_protocols, TRUE)) ? 'mail' : $this->protocol;

 		

-		if ($return == true)

+		if ($return == TRUE)

 			return $this->protocol;

 	}

   	

@@ -556,15 +556,22 @@
 	 * @param	bool

 	 * @return	string

 	 */	

-	function _get_encoding($return = true)

+	function _get_encoding($return = TRUE)

 	{		

-		$this->_encoding = ( ! in_array($this->_encoding, $this->_bit_depths)) ? '7bit' : $this->_encoding;

+		$this->_encoding = ( ! in_array($this->_encoding, $this->_bit_depths)) ? '8bit' : $this->_encoding;

 		

-		if ( ! in_array($this->charset, $this->_base_charsets, TRUE))

-			$this->_encoding = "8bit";

+		foreach ($this->_base_charsets as $charset)

+		{

+			if (strncmp($charset, $this->charset, strlen($charset)) == 0)

+			{

+				$this->_encoding = '7bit';

+			}

+		}

 			

-		if ($return == true)

-			return $this->_encoding;

+		if ($return == TRUE)

+		{

+			return $this->_encoding;			

+		}

 	}

 

 	// --------------------------------------------------------------------

@@ -1307,7 +1314,7 @@
 		}

 

 		$this->_set_error_message('email_sent', $this->_get_protocol());

-		return true;

+		return TRUE;

 	}	

   	

 	// --------------------------------------------------------------------

@@ -1422,7 +1429,7 @@
 		}

 

 		$this->_send_command('quit');

-		return true;

+		return TRUE;

 	}	

   	

 	// --------------------------------------------------------------------

@@ -1515,7 +1522,7 @@
 		if ($cmd == 'quit')

 			fclose($this->_smtp_connect);

 	

-		return true;

+		return TRUE;

 	}

   	

 	// --------------------------------------------------------------------

@@ -1529,7 +1536,7 @@
 	function _smtp_authenticate()

 	{	

 		if ( ! $this->_smtp_auth)

-			return true;

+			return TRUE;

 			

 		if ($this->smtp_user == ""  AND  $this->smtp_pass == "")

 		{

@@ -1567,7 +1574,7 @@
 			return FALSE;

 		}

 	

-		return true;

+		return TRUE;

 	}

   	

 	// --------------------------------------------------------------------

@@ -1586,7 +1593,7 @@
 			return FALSE;

 		}

 		else

-			return true;

+			return TRUE;

 	}

   	

 	// --------------------------------------------------------------------