Exemplo n.º 1
0
 function make_preparation($template, $rest = array())
 {
     global $Conf, $Opt;
     // look up template
     if (is_string($template) && $template[0] == "@") {
         $template = self::get_template(substr($template, 1));
     }
     // add rest fields to template for expansion
     foreach (self::$email_fields as $lcfield => $field) {
         if (isset($rest[$lcfield])) {
             $template[$lcfield] = $rest[$lcfield];
         }
     }
     // expand the template
     $prep = $this->preparation = $this->create_preparation();
     $m = $this->expand($template);
     $this->preparation = null;
     $subject = MimeText::encode_header("Subject: ", $m["subject"]);
     $prep->subject = substr($subject, 9);
     $prep->body = $m["body"];
     // look up recipient; use preferredEmail if set
     $recipient = $this->recipient;
     if (!$recipient || !$recipient->email) {
         return Conf::msg_error("no email in Mailer::send");
     }
     if (get($recipient, "preferredEmail")) {
         $recipient = (object) array("email" => $recipient->preferredEmail);
         foreach (array("firstName", "lastName", "name", "fullName") as $k) {
             if (get($this->recipient, $k)) {
                 $recipient->{$k} = $this->recipient->{$k};
             }
         }
     }
     $prep->to = array(Text::user_email_to($recipient));
     $m["to"] = $prep->to[0];
     $prep->sendable = self::allow_send($recipient->email);
     // parse headers
     if (!get($Opt, "emailFromHeader")) {
         $Opt["emailFromHeader"] = MimeText::encode_email_header("From: ", $Opt["emailFrom"]);
     }
     $prep->headers = array("from" => $Opt["emailFromHeader"] . MAILER_EOL, "subject" => $subject . MAILER_EOL, "to" => "");
     foreach (self::$email_fields as $lcfield => $field) {
         if (($text = get_s($m, $lcfield)) !== "" && $text !== "<none>") {
             if ($hdr = MimeText::encode_email_header($field . ": ", $text)) {
                 $prep->headers[$lcfield] = $hdr . MAILER_EOL;
             } else {
                 $prep->errors[$lcfield] = $text;
                 if (!get($rest, "no_error_quit")) {
                     Conf::msg_error("{$field} destination “<samp>" . htmlspecialchars($text) . "</samp>” isn't a valid email list.");
                 }
             }
         }
     }
     $prep->headers["mime-version"] = "MIME-Version: 1.0" . MAILER_EOL;
     $prep->headers["content-type"] = "Content-Type: text/plain; charset=utf-8" . MAILER_EOL;
     if ($prep->errors && !get($rest, "no_error_quit")) {
         return false;
     } else {
         return $prep;
     }
 }