From f22c2cefb4c7f8b1a995d5de6f706d49861c473c Mon Sep 17 00:00:00 2001 From: svncommit <devs@roundcube.net> Date: Tue, 12 May 2009 10:10:30 -0400 Subject: [PATCH] Really, really logout (fixes r2467). --- program/include/rcube_mail_mime.php | 32 +++++++------------------------- 1 files changed, 7 insertions(+), 25 deletions(-) diff --git a/program/include/rcube_mail_mime.php b/program/include/rcube_mail_mime.php index 79c80dd..ab93d3a 100644 --- a/program/include/rcube_mail_mime.php +++ b/program/include/rcube_mail_mime.php @@ -5,7 +5,7 @@ | program/include/rcube_mail_mime.php | | | | This file is part of the RoundCube Webmail client | - | Copyright (C) 2007-2008, RoundCube Dev. - Switzerland | + | Copyright (C) 2007-2009, RoundCube Dev. - Switzerland | | Licensed under the GNU GPL | | | | PURPOSE: | @@ -128,7 +128,7 @@ { // if header contains e-mail addresses if (preg_match('/\s<.+@[a-z0-9\-\.]+\.[a-z]+>/U', $hdr_value)) { - $chunks = $this->_explode_quoted_string(',', $hdr_value); + $chunks = rcube_explode_quoted_string(',', $hdr_value); } else { $chunks = array($hdr_value); @@ -141,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)) { @@ -160,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; @@ -180,31 +180,13 @@ } } - $input[$hdr_name] = $hdr_value; + $input[$hdr_name] = wordwrap($hdr_value, 990, "\n", true); // hard limit header length } return $input; } - function _explode_quoted_string($delimiter, $string) - { - $result = array(); - $strlen = strlen($string); - for ($q=$p=$i=0; $i < $strlen; $i++) { - if ($string{$i} == "\"" && $string{$i-1} != "\\") { - $q = $q ? false : true; - } - else if (!$q && $string{$i} == $delimiter) { - $result[] = substr($string, $p, $i - $p); - $p = $i + 1; - } - } - - $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 -- Gitblit v1.9.1