protected function sendSoftLimitAlert()
 {
     $mailers = AJXP_PluginsService::getInstance()->getPluginsByType("mailer");
     if (count($mailers)) {
         $this->mailer = array_shift($mailers);
         $percent = $this->getFilteredOption("SOFT_QUOTA");
         $quota = $this->getFilteredOption("DEFAULT_QUOTA");
         $this->mailer->sendMail(array(AuthService::getLoggedUser()->getId()), "You are close to exceed your quota!", "You are currently using more than {$percent}% of your authorized quota of {$quota}!");
     }
 }
 protected function sendMailImpl($recipients, $subject, $body, $from = null, $images = array(), $useHtml = true)
 {
     require_once "lib/class.phpmailer-lite.php";
     $realRecipients = $this->resolveAdresses($recipients);
     // NOW IF THERE ARE RECIPIENTS FOR ANY REASON, GO
     $mail = new PHPMailerLite(true);
     $mail->Mailer = $this->getFilteredOption("MAILER");
     $mail->Sendmail = $this->getFilteredOption("SENDMAIL_PATH");
     $from = $this->resolveFrom($from);
     if (!is_array($from) || empty($from["adress"])) {
         throw new Exception("Cannot send email without a FROM address. Please check your core.mailer configuration.");
     }
     if (!empty($from)) {
         if ($from["adress"] != $from["name"]) {
             $mail->SetFrom($from["adress"], $from["name"]);
         } else {
             $mail->setFrom($from["adress"]);
         }
     }
     foreach ($realRecipients as $address) {
         if ($address["adress"] == $address["name"]) {
             $mail->AddAddress(trim($address["adress"]));
         } else {
             $mail->AddAddress(trim($address["adress"]), trim($address["name"]));
         }
     }
     $mail->WordWrap = 50;
     // set word wrap to 50 characters
     $mail->IsHTML($useHtml);
     // set email format to HTML
     $mail->CharSet = "utf-8";
     $mail->Encoding = $this->getFilteredOption("MAIL_ENCODING");
     foreach ($images as $image) {
         $mail->AddEmbeddedImage($image["path"], $image["cid"], '', 'base64', 'image/png');
     }
     $mail->Subject = $subject;
     if ($useHtml) {
         if (strpos($body, "<html") !== false) {
             $mail->Body = $body;
         } else {
             $mail->Body = "<html><body>" . nl2br($body) . "</body></html>";
         }
         $mail->AltBody = AjxpMailer::simpleHtml2Text($mail->Body);
     } else {
         $mail->Body = AjxpMailer::simpleHtml2Text($body);
     }
     if (!$mail->Send()) {
         $message = "Message could not be sent\n";
         $message .= "Mailer Error: " . $mail->ErrorInfo;
         throw new Exception($message);
     }
 }
 public function sendMail($recipients, $subject, $body, $from = null, $imageLink = null, $useHtml = true)
 {
     $prepend = ConfService::getCoreConf("SUBJECT_PREPEND", "mailer");
     $append = ConfService::getCoreConf("SUBJECT_APPEND", "mailer");
     $layoutFolder = ConfService::getCoreConf("LAYOUT_FOLDER", "mailer");
     $layout = ConfService::getCoreConf("BODY_LAYOUT", "mailer");
     $forceFrom = ConfService::getCoreConf("FORCE_UNIQUE_FROM", "mailer");
     $coreFrom = ConfService::getCoreConf("FROM", "mailer");
     if ($forceFrom && $coreFrom != null) {
         $coreFromName = ConfService::getCoreConf("FROM_NAME", "mailer");
         $from = array("adress" => $coreFrom, "name" => $coreFromName);
     }
     $rowBody = $body;
     $images = array();
     if (!empty($prepend)) {
         $subject = $prepend . " " . $subject;
     }
     if (!empty($append)) {
         $subject .= " " . $append;
     }
     if (!empty($layoutFolder)) {
         $layoutFolder .= "/";
         $lang = ConfService::getLanguage();
         if (!$useHtml) {
             if (is_file(AJXP_INSTALL_PATH . "/" . $layoutFolder . $lang . ".txt")) {
                 $layout = implode("", file(AJXP_INSTALL_PATH . "/" . $layoutFolder . $lang . ".txt"));
             } else {
                 if (is_file(AJXP_INSTALL_PATH . "/" . $layoutFolder . "en.txt")) {
                     $layout = implode("", file(AJXP_INSTALL_PATH . "/" . $layoutFolder . "en.txt"));
                 } else {
                     $layout = "AJXP_MAIL_BODY";
                 }
             }
         } else {
             if (is_file(AJXP_INSTALL_PATH . "/" . $layoutFolder . $lang . ".html")) {
                 $layout = implode("", file(AJXP_INSTALL_PATH . "/" . $layoutFolder . $lang . ".html"));
             } else {
                 if (is_file(AJXP_INSTALL_PATH . "/" . $layoutFolder . "en.html")) {
                     $layout = implode("", file(AJXP_INSTALL_PATH . "/" . $layoutFolder . "en.html"));
                 }
             }
         }
     }
     if (strpos($layout, "AJXP_MAIL_BODY") !== false) {
         $body = str_replace("AJXP_MAIL_BODY", $useHtml ? nl2br($body) : $body, $layout);
     }
     if ($imageLink != null && $useHtml) {
         $body = str_replace(array("AJXP_IMAGE_LINK"), "<a href='" . $imageLink . "'>" . '<img alt="Download" width="100" style="width: 100px;" src="cid:download_id">' . "</a>", $body);
         $images[] = array("path" => AJXP_INSTALL_PATH . "/" . $layoutFolder . "/download.png", "cid" => "download_id");
     } else {
         $body = str_replace(array("AJXP_IMAGE_LINK", "AJXP_IMAGE_END"), "", $body);
     }
     $body = str_replace("AJXP_MAIL_SUBJECT", $subject, $body);
     $this->sendMailImpl($recipients, $subject, $body, $from, $images, $useHtml);
     if (AJXP_SERVER_DEBUG) {
         if (!$useHtml) {
             $rowBody = '[TEXT ONLY] ' . AjxpMailer::simpleHtml2Text($rowBody);
         }
         $line = "------------------------------------------------------------------------\n";
         file_put_contents($this->mailCache, $line . "Sending mail from " . print_r($from, true) . " to " . print_r($recipients, true) . "\nSubject: {$subject}\nBody:\n{$rowBody}\n", FILE_APPEND);
     }
 }