alecpl
2008-10-02 52851464e0267795ffd688e3c769d9161011dba8
program/include/rcube_mail_mime.php
@@ -27,6 +27,9 @@
 */
class rcube_mail_mime extends Mail_mime
{
  protected $mime_content;
  /**
   * Set build parameters
   */
@@ -138,7 +141,7 @@
        $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)) {
@@ -157,9 +160,9 @@
            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;
@@ -201,6 +204,21 @@
    $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;
  }
}