X-Git-Url: http://git.polytechnique.org/?a=blobdiff_plain;ds=sidebyside;f=classes%2Fplmailer.php;h=02ed8af34a742893061fcc21339695209c62b78d;hb=a286fc7adaddd6aadd16dc69595fe929809d84b3;hp=85613466e9b38dd973dcc5d5165c7e97ccc31d42;hpb=a7f778a593a0a7e168a7112ec28cb84d032adaf3;p=platal.git diff --git a/classes/plmailer.php b/classes/plmailer.php index 8561346..02ed8af 100644 --- a/classes/plmailer.php +++ b/classes/plmailer.php @@ -163,11 +163,19 @@ class PlMailer extends Mail_Mime { } } + static private function formatUser(PlUser $user) + { + return '"' . $user->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); } @@ -309,7 +317,7 @@ class PlMailer extends Mail_Mime { public function sendTo(PlUser &$user) { - $this->addTo('"' . $user->fullName() . '" <' . $user->bestEmail() . '>'); + $this->addTo($user); $this->assign_by_ref('user', $user); return $this->send($user->isEmailFormatHtml()); } @@ -321,8 +329,8 @@ class PlMailer extends Mail_Mime { $this->addHeader('X-Org-Mail', S::user()->forlifeEmail()); } $addrs = Array(); - foreach(Array('To', 'Cc', 'Bcc') as $hdr) { - if(isset($this->_headers[$hdr])) { + foreach (Array('To', 'Cc', 'Bcc') as $hdr) { + if (isset($this->_headers[$hdr])) { require_once 'Mail/RFC822.php'; $parsed = @Mail_RFC822::parseAddressList($this->_headers[$hdr]); if (is_array($parsed)) { @@ -330,15 +338,26 @@ class PlMailer extends Mail_Mime { } } } - if(empty($addrs)) { + if (empty($addrs)) { return false; } $dests = Array(); - foreach($addrs as $a) { + foreach ($addrs as $a) { $dests[] = "{$a->mailbox}@{$a->host}"; } + // Support for a "catch-all" email address, to be used by developers. + // This mode can only be activated when the working copy is in restricted + // mode, to ensure that production plat/al copies are never affected. + global $globals; + if ($globals->email_catchall && $globals->core->restricted_platal) { + require_once 'Mail/RFC822.php'; + if (@Mail_RFC822::isValidInetAddress($globals->email_catchall)) { + $dests = array($globals->email_catchall); + } + } + // very important to do it in THIS order very precisely. $body = $this->get(array('text_charset' => $this->charset, 'text_encoding' => '8bit',