*/
class rcube_mail_mime extends Mail_mime
{
+
+ protected $mime_content;
+
/**
* Set build parameters
*/
$value = trim($value);
//This header contains non ASCII chars and should be encoded.
- if (preg_match('#[\x80-\xFF]{1}#', $value)) {
+ if (preg_match('/[\x80-\xFF]{1}/', $value)) {
$suffix = '';
// Don't encode e-mail address
if (preg_match('/(.+)\s(<.+@[a-z0-9\-\.]+>)$/Ui', $value, $matches)) {
default:
// quoted-printable encoding has been selected
$mode = 'Q';
- $encoded = preg_replace('/([\x2C\x3F\x80-\xFF])/e', "'='.sprintf('%02X', ord('\\1'))", $value);
- // replace spaces with _
- $encoded = str_replace(' ', '_', $encoded);
+ // replace ?, =, _ and spaces
+ $encoded = str_replace(array('=','_','?',' '), array('=3D','=5F','=3F','_'), $value);
+ $encoded = preg_replace('/([\x80-\xFF])/e', "'='.sprintf('%02X', ord('\\1'))", $encoded);
}
$value = '=?' . $params['head_charset'] . '?' . $mode . '?' . $encoded . '?=' . $suffix;
$result[] = substr($string, $p);
return $result;
}
+
+ /**
+ * Provides caching of body of constructed MIME Message to avoid
+ * duplicate construction of message and damage of MIME headers
+ *
+ * @return string The mime content
+ * @access public
+ * @override
+ */
+ public function &get($build_params = null)
+ {
+ if(empty($this->mime_content))
+ $this->mime_content = parent::get($build_params);
+ return $this->mime_content;
+ }
}