diff options
author | Andrey Andreev <narf@devilix.net> | 2016-01-20 16:25:13 +0100 |
---|---|---|
committer | Andrey Andreev <narf@devilix.net> | 2016-01-20 16:25:13 +0100 |
commit | c70216d560d85adf907d9941868a0d8d3df868ca (patch) | |
tree | 5b8da49275306abbe4684099fd29fcd8c69c4e1a /system | |
parent | 22df06b544cb74b4a71c0e1b0d9fa0bc13c95469 (diff) |
Fix #4391
Diffstat (limited to 'system')
-rw-r--r-- | system/libraries/Email.php | 18 |
1 files changed, 11 insertions, 7 deletions
diff --git a/system/libraries/Email.php b/system/libraries/Email.php index 007f9b431..ed6f737a1 100644 --- a/system/libraries/Email.php +++ b/system/libraries/Email.php @@ -574,14 +574,18 @@ class CI_Email { $this->validate_email($this->_str_to_array($replyto)); } - if ($name === '') - { - $name = $replyto; - } - - if (strpos($name, '"') !== 0) + if ($name !== '') { - $name = '"'.$name.'"'; + // only use Q encoding if there are characters that would require it + if ( ! preg_match('/[\200-\377]/', $name)) + { + // add slashes for non-printing characters, slashes, and double quotes, and surround it in double quotes + $name = '"'.addcslashes($name, "\0..\37\177'\"\\").'"'; + } + else + { + $name = $this->_prep_q_encoding($name); + } } $this->set_header('Reply-To', $name.' <'.$replyto.'>'); |