X-Git-Url: http://git.polytechnique.org/?a=blobdiff_plain;f=classes%2Fplmailer.php;h=24479f6550af7c947b72cb88c9fc2fc6a135e46c;hb=f23d33e1b114e9032b4b966baebdeb14b4215313;hp=02ed8af34a742893061fcc21339695209c62b78d;hpb=31ac496f284cd21164e05d1472ad1ceca9fe1095;p=platal.git diff --git a/classes/plmailer.php b/classes/plmailer.php index 02ed8af..24479f6 100644 --- a/classes/plmailer.php +++ b/classes/plmailer.php @@ -1,6 +1,6 @@ ]*>)!u', '\1"\2" \3', $email); + $email = preg_replace('!(^|, *)([^<"]+?) *(<[^>]*>)!ue', + '\1 "\2" \3', $email); + return preg_replace('/"([^<]+)"/e', + '"\\"" . PlMailer::encodeStringQP("\1") . "\\""', + $email); } public function addTo($email) @@ -189,6 +193,12 @@ class PlMailer extends Mail_Mime { } } + public function setTo($email) + { + $email = $this->correct_emails($email); + $this->_headers['To'] = $email; + } + public function addCc($email) { return parent::addCc($this->correct_emails($email)); @@ -204,6 +214,16 @@ class PlMailer extends Mail_Mime { return parent::setFrom($this->correct_emails($email)); } + static function encodeStringQP($string) + { + if (!preg_match('/^[\x20-\x7e]*$/', $string)) { + $string = '=?UTF-8?Q?' . preg_replace('/[^\x21-\x3C\x3e\x40-\x7e]/e', 'PlMailer::encodeQP("\0")', $string) + . '?='; + } + return $string; + } + + static function encodeQP($char) { return sprintf('=%02X', ord($char)); @@ -211,11 +231,7 @@ class PlMailer extends Mail_Mime { public function setSubject($subject) { - if (!preg_match('/^[\x20-\x7e]*$/', $subject)) { - $subject = '=?UTF-8?Q?' . preg_replace('/[^\x21-\x3C\x3e-\x7e]/e', 'PlMailer::encodeQP("\0")', $subject) - . '?='; - } - return parent::setSubject($subject); + return parent::setSubject(self::encodeStringQP($subject)); } public function addHeader($hdr,$val) @@ -317,7 +333,7 @@ class PlMailer extends Mail_Mime { public function sendTo(PlUser &$user) { - $this->addTo($user); + $this->setTo($user); $this->assign_by_ref('user', $user); return $this->send($user->isEmailFormatHtml()); }