summaryrefslogtreecommitdiff
path: root/program/lib/Roundcube/rcube_mime.php
diff options
context:
space:
mode:
authorAleksander Machniak <alec@alec.pl>2014-08-21 18:08:26 +0200
committerAleksander Machniak <alec@alec.pl>2014-08-21 18:08:26 +0200
commitf01666a6229cfacee45d4131e7dbcb52e40abfea (patch)
tree9b43952163ec23c3bec317d01d11249d0b805f47 /program/lib/Roundcube/rcube_mime.php
parentf53cb2dca0347556cb91234546d7f007ccbac90b (diff)
Fix handling of email addresses with quoted domain part (#1490040)
Diffstat (limited to 'program/lib/Roundcube/rcube_mime.php')
-rw-r--r--program/lib/Roundcube/rcube_mime.php16
1 files changed, 16 insertions, 0 deletions
diff --git a/program/lib/Roundcube/rcube_mime.php b/program/lib/Roundcube/rcube_mime.php
index 14bc48336..f66cf1437 100644
--- a/program/lib/Roundcube/rcube_mime.php
+++ b/program/lib/Roundcube/rcube_mime.php
@@ -394,6 +394,7 @@ class rcube_mime
}
if ($address) {
+ $address = self::fix_email($address);
$result[$key] = array('name' => $name, 'address' => $address);
}
}
@@ -906,4 +907,19 @@ class rcube_mime
return 'image/' . $type;
}
+ /**
+ * Try to fix invalid email addresses
+ */
+ public static function fix_email($email)
+ {
+ $parts = rcube_utils::explode_quoted_string('@', $email);
+ foreach ($parts as $idx => $part) {
+ // remove redundant quoting (#1490040)
+ if ($part[0] == '"' && preg_match('/^"([a-zA-Z0-9._+=-]+)"$/', $part, $m)) {
+ $parts[$idx] = $m[1];
+ }
+ }
+
+ return implode('@', $parts);
+ }
}