X-Git-Url: http://git.polytechnique.org/?a=blobdiff_plain;f=classes%2Fplmailer.php;h=2106f024e88fe4df3a247141c947ffb6cb1759e0;hb=e8ddc3f28701273de2b5c0f822146ab2a39dea91;hp=2106d5024b91098f057d2d2c9523ea74f2fcb4c9;hpb=ba63661ce2f38974002c7e4113320e9d06010853;p=platal.git diff --git a/classes/plmailer.php b/classes/plmailer.php index 2106d50..2106f02 100644 --- a/classes/plmailer.php +++ b/classes/plmailer.php @@ -1,6 +1,6 @@ fullName() . '" <' . $user->bestEmail() . '>'; + } + /** * converts all : Foo Bar Baz into "Foo Bar Baz" which is RFC compliant */ private function correct_emails($email) { + if ($email instanceof PlUser) { + $email = self::formatUser($email); + } return preg_replace('!(^|, *)([^<"]+?) *(<[^>]*>)!u', '\1"\2" \3', $email); } @@ -196,6 +204,20 @@ class PlMailer extends Mail_Mime { return parent::setFrom($this->correct_emails($email)); } + static function encodeQP($char) + { + return sprintf('=%02X', ord($char)); + } + + 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); + } + public function addHeader($hdr,$val) { switch($hdr) { @@ -269,6 +291,7 @@ class PlMailer extends Mail_Mime { if (!($globals->debug & DEBUG_SMARTY)) { $level = error_reporting(0); } + $this->page->assign_by_ref('globals', $globals); $this->page->run('head'); // process page headers $this->wiki = trim($this->page->run('wiki')); // get wiki if (!$this->wiki) { @@ -292,12 +315,18 @@ class PlMailer extends Mail_Mime { } } + public function sendTo(PlUser &$user) + { + $this->addTo($user); + $this->assign_by_ref('user', $user); + return $this->send($user->isEmailFormatHtml()); + } + public function send($with_html = true) { $this->processPage($with_html); - if (S::v('forlife')) { - global $globals; - $this->addHeader('X-Org-Mail', S::v('forlife') . '@' . $globals->mail->domain); + if (S::user()) { + $this->addHeader('X-Org-Mail', S::user()->forlifeEmail()); } $addrs = Array(); foreach(Array('To', 'Cc', 'Bcc') as $hdr) {