summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDerek Jones <derek.jones@ellislab.com>2008-01-22 19:16:39 +0100
committerDerek Jones <derek.jones@ellislab.com>2008-01-22 19:16:39 +0100
commite7c4c3211c05c7bde09dbdbac77647461f52bfdb (patch)
tree5f7ce7da3a112112c868b24fbdb53d96dfb3cc5a
parentff943eb1a93421357acfe596062863c7d58f32c3 (diff)
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.
-rw-r--r--system/libraries/Email.php47
-rw-r--r--user_guide/changelog.html1
2 files changed, 28 insertions, 20 deletions
diff --git a/system/libraries/Email.php b/system/libraries/Email.php
index 6136a0501..25e59632f 100644
--- a/system/libraries/Email.php
+++ b/system/libraries/Email.php
@@ -36,13 +36,13 @@ class CI_Email {
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 @@ class CI_Email {
// 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 @@ class CI_Email {
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 @@ class CI_Email {
{
if ($limit != '' && is_numeric($limit))
{
- $this->bcc_batch_mode = true;
+ $this->bcc_batch_mode = TRUE;
$this->bcc_batch_size = $limit;
}
@@ -538,12 +538,12 @@ class CI_Email {
* @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 @@ class CI_Email {
* @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 @@ class CI_Email {
}
$this->_set_error_message('email_sent', $this->_get_protocol());
- return true;
+ return TRUE;
}
// --------------------------------------------------------------------
@@ -1422,7 +1429,7 @@ class CI_Email {
}
$this->_send_command('quit');
- return true;
+ return TRUE;
}
// --------------------------------------------------------------------
@@ -1515,7 +1522,7 @@ class CI_Email {
if ($cmd == 'quit')
fclose($this->_smtp_connect);
- return true;
+ return TRUE;
}
// --------------------------------------------------------------------
@@ -1529,7 +1536,7 @@ class CI_Email {
function _smtp_authenticate()
{
if ( ! $this->_smtp_auth)
- return true;
+ return TRUE;
if ($this->smtp_user == "" AND $this->smtp_pass == "")
{
@@ -1567,7 +1574,7 @@ class CI_Email {
return FALSE;
}
- return true;
+ return TRUE;
}
// --------------------------------------------------------------------
@@ -1586,7 +1593,7 @@ class CI_Email {
return FALSE;
}
else
- return true;
+ return TRUE;
}
// --------------------------------------------------------------------
diff --git a/user_guide/changelog.html b/user_guide/changelog.html
index d01a84237..530a612c3 100644
--- a/user_guide/changelog.html
+++ b/user_guide/changelog.html
@@ -155,6 +155,7 @@ Change Log
<ul>
<li>Removed an extraneous call to loading models (#3286).</li>
<li>Fixed a bug (#3289) in the File Helper where temp files in directories being tested with is_really_writable() were not being handled properly</li>
+ <li>Fixed a bug (#3279) where the Email class was sending the wrong Content-Transfer-Encoding for some character sets.</li>
<li>Fixed a bug (#3268) where the Router could leave '/' as the path.</li>
<li>Fixed a bug in <kbd>highlight_phrase()</kbd> that caused an error with slashes.</li>
<li>Fixed a bug: $field_names[] vs $Ffield_names[] in postgre and sqlite drivers.</li>