function Download(&$_reload, $_delete, $_test = false)
 {
     Server::InitDataBlock(array("DBCONFIG"));
     require_once LIVEZILLA_PATH . "_lib/objects.mail.inc.php";
     $ms = new MailSystem($this);
     $mails = array();
     try {
         $mails = $ms->ReceiveEmails($_reload, $_delete, $_test);
     } catch (Exception $e) {
         if ($_test) {
             throw $e;
         } else {
             handleError("111", $this->Host . " " . $this->Type . " mailbox connection error: " . $e->getMessage(), "functions.global.inc.php", 0);
         }
         return $mails;
     }
     return $mails;
 }
 private function ZENDParseEmails(&$_reload, $mails, $_delete, $_test)
 {
     $list = array();
     $message = null;
     $starttime = time();
     $executiontime = Server::SetTimeLimit(CALLER_TIMEOUT - 10);
     $delete = array();
     $subject = "";
     try {
         $counter = 0;
         foreach ($mails as $mnum => $message) {
             if ($_test) {
                 return count($mails);
             }
             try {
                 $temail = new TicketEmail();
                 if ($message->headerExists("subject")) {
                     $subject = $temail->Subject = mimeHeaderDecode($message->Subject);
                 }
                 if ($message->headerExists("message-id")) {
                     $temail->Id = str_replace(array("<", ">"), "", $message->MessageId);
                 }
                 if (empty($temail->Id)) {
                     $temail->Id = getId(32);
                 }
                 if ($_delete) {
                     $delete[$mnum] = $temail->Id;
                 }
                 if (strpos($message->From, "<") !== false) {
                     $fromparts = explode("<", str_replace(">", "", $message->From));
                     if (!empty($fromparts[0])) {
                         $temail->Name = str_replace(array("\""), "", mimeHeaderDecode(trim($fromparts[0])));
                     }
                     $temail->Email = trim($fromparts[1]);
                 } else {
                     $temail->Email = trim($message->From);
                 }
                 if (strpos($message->To, "<") !== false) {
                     $toparts = explode("<", str_replace(">", "", $message->To));
                     $temail->ReceiverEmail = trim($toparts[1]);
                 } else {
                     $temail->ReceiverEmail = trim($message->To);
                 }
                 if ($message->headerExists("reply-to")) {
                     if (strpos($message->ReplyTo, "<") !== false) {
                         $rtoparts = explode("<", str_replace(">", "", $message->ReplyTo));
                         $temail->ReplyTo = trim($rtoparts[1]);
                     } else {
                         $temail->ReplyTo = trim($message->ReplyTo);
                     }
                 }
                 $parts = array();
                 if ($message->isMultipart()) {
                     foreach (new RecursiveIteratorIterator($message) as $part) {
                         $parts[] = $part;
                     }
                 } else {
                     $parts[] = $message;
                 }
                 foreach ($parts as $part) {
                     try {
                         if ($part->headerExists("content-type")) {
                             $ctype = $part->contentType;
                         } else {
                             $ctype = 'text/html';
                         }
                         if ($part->headerExists("content-disposition")) {
                             $ctype .= "; " . $part->contentDisposition;
                         }
                         $charset = "";
                         $hparts = explode(";", str_replace(" ", "", $ctype));
                         foreach ($hparts as $hpart) {
                             if (strpos(strtolower($hpart), "charset=") === 0) {
                                 $charset = trim(str_replace(array("charset=", "'", "\""), "", strtolower($hpart)));
                             }
                         }
                         $isatt = strpos(strtolower($ctype), "name=") !== false || strpos(strtolower($ctype), "filename=") !== false;
                         if (DEBUG_MODE) {
                             Logging::GeneralLog(" PROCESSING EMAIL / charset:" . $ctype . " - " . $charset . " - " . $subject . " - " . $isatt);
                         }
                         if (!$isatt && (($html = strpos(strtolower($ctype), 'text/html') !== false) || strpos(strtolower($ctype), 'text/plain') !== false)) {
                             $content = $part->getContent();
                             foreach ($part->getHeaders() as $name => $value) {
                                 if (strpos(strtolower($name), 'content-transfer-encoding') !== false && strpos(strtolower($value), 'quoted-printable') !== false) {
                                     $content = quoted_printable_decode($content);
                                 } else {
                                     if (strpos(strtolower($name), 'content-transfer-encoding') !== false && strpos(strtolower($value), 'base64') !== false) {
                                         $content = base64_decode($content);
                                     }
                                 }
                             }
                             if ($html) {
                                 $temail->BodyHTML = max($temail->BodyHTML, $content);
                                 $content = MailSystem::DownConvertHTML($content);
                             }
                             if ((!$html || empty($temail->Body)) && !empty($content)) {
                                 if (strpos(strtolower($charset), 'utf-8') === false && !empty($charset)) {
                                     if (DEBUG_MODE) {
                                         Logging::GeneralLog(" PROCESSING EMAIL / iconv | " . strtoupper($charset) . " | " . 'UTF-8' . " | " . $subject);
                                     }
                                     $temail->Body = @iconv(strtoupper($charset), 'UTF-8', $content);
                                 } else {
                                     if ($html && empty($charset)) {
                                         $temail->Body = utf8_encode($content);
                                     } else {
                                         $temail->Body = $content;
                                     }
                                 }
                             }
                         } else {
                             $filename = "";
                             $fileid = getId(32);
                             $unknown = getId(32);
                             $filesid = Server::$Configuration->File["gl_lzid"] . "_" . $fileid;
                             foreach ($hparts as $hpart) {
                                 $hpart = mimeHeaderDecode($hpart);
                                 if (strpos(strtolower(trim($hpart)), "name=") === 0 || strpos(strtolower(trim($hpart)), "filename=") === 0) {
                                     $filename = trim(str_replace(array("filename=", "name=", "'", "\""), "", strtolower($hpart)));
                                 } else {
                                     if ($part->headerExists("content-id") && empty($filename)) {
                                         $filename = trim(str_replace(array("<", ">", "'", "\""), "", strtolower($part->contentId)));
                                     } else {
                                         if (strpos(strtolower($ctype), 'message/rfc822') !== false && $part->headerExists("subject") && empty($filename)) {
                                             $filename = trim($part->Subject) . ".eml";
                                         } else {
                                             if (strpos(strtolower($ctype), 'message/rfc822') !== false) {
                                                 $unknown = "unknown.eml";
                                             }
                                         }
                                     }
                                 }
                             }
                             $base64dec = !(strpos(strtolower($ctype), 'message/rfc822') !== false || strpos(strtolower($ctype), 'text/plain') !== false);
                             foreach ($part->getHeaders() as $name => $value) {
                                 if (strpos(strtolower($name), 'content-transfer-encoding') !== false && strpos(strtolower($value), 'base64') !== false) {
                                     $base64dec = true;
                                 }
                             }
                             $filename = empty($filename) ? $unknown : str_replace(array("\\", ":", "?", "*", "<", ">", "|", "/", "\""), "", $filename);
                             $content = !$base64dec ? $part->getContent() : base64_decode($part->getContent());
                             $temail->Attachments[$fileid] = array($filesid, $filename, $content);
                             if (DEBUG_MODE) {
                                 Logging::GeneralLog("ADD ATT: " . $filesid . " - " . $filename . " - " . $ctype);
                             }
                         }
                     } catch (Exception $e) {
                         handleError("112", "IMAP Email Part Error: " . $e->getMessage() . ", email: " . $subject, "functions.global.inc.php", 0);
                     }
                 }
                 $temail->Created = strtotime($message->Date);
                 if ((!is_numeric($temail->Created) || empty($temail->Created)) && $message->headerExists("delivery-date")) {
                     $temail->Created = strtotime($message->DeliveryDate);
                 }
                 if (!is_numeric($temail->Created) || empty($temail->Created)) {
                     $temail->Created = time();
                 }
                 $list[] = $temail;
                 if (time() - $starttime >= $executiontime / 2 || $counter++ > DATA_ITEM_LOADS) {
                     $_reload = true;
                     break;
                 }
             } catch (Exception $e) {
                 if ($_test) {
                     throw $e;
                 } else {
                     handleError("115", "Email Error: " . $e->getMessage() . ", email: " . $subject, "functions.global.inc.php", 0);
                 }
             }
         }
         try {
             krsort($delete);
             foreach ($delete as $num => $id) {
                 $mails->removeMessage($num);
             }
         } catch (Exception $e) {
             if ($_test) {
                 throw $e;
             } else {
                 handleError("114", "Email delete error: " . $e->getMessage() . ", email: " . $subject, "functions.global.inc.php", 0);
             }
         }
     } catch (Exception $e) {
         if ($_test) {
             throw $e;
         } else {
             handleError("113", "Email Error: " . $e->getMessage() . ", email: " . $subject, "functions.global.inc.php", 0);
         }
     }
     return $list;
 }
function sendMail($_account, $_receiver, $_replyto, $_text, $_subject = "", $_test = false, $_attachments = null, $_fakeSender = "")
{
    if ($_account == null) {
        $_account = Mailbox::GetDefaultOutgoing();
    }
    if ($_account == null) {
        return null;
    }
    require_once LIVEZILLA_PATH . "_lib/objects.mail.inc.php";
    $mailer = new MailSystem($_account, $_receiver, $_replyto, $_text, $_subject, $_test, $_attachments);
    $mailer->SendEmail($_fakeSender);
    return $mailer->Result;
}
Beispiel #4
0
         $mail_id = "registration_activation";
         $activation_code = md5(time() . $username);
         $str2find = array("%site_name%", "%site_url%", "%fullname%", "%username%", "%activation_code%", "%activation_url_code%", "%activation_url%");
         $str2change = array($settings['site_name'], $settings['site_url'], $fullname, $username, $activation_code, $settings['site_url'] . "?view=activation&username="******"&i=" . $activation_code, $settings['site_url'] . "?view=activation");
         $newdata2 = array("status" => "Un-verified", "verifycode" => $activation_code);
     } else {
         $mail_id = "registration_complete";
         $str2find = array("%site_name%", "%site_url%", "%fullname%", "%username%");
         $str2change = array($settings['site_name'], $settings['site_url'], $fullname, $username);
         $newdata2 = array("status" => "Active");
     }
     $set = array_merge($newdata, $newdata2);
     $upd = $db->insert("members", $set);
     $db->query("UPDATE statistics SET value=value+1 WHERE field='members_today'");
     $data_mail = array("mail_id" => $mail_id, "str2find" => $str2find, "str2change" => $str2change, "receiver" => $email);
     $mail = new MailSystem($data_mail);
     $mail->send();
     $db->query("UPDATE statistics SET value=value+1 WHERE field='members'");
 }
 if ($country != "") {
     $countcountry = $db->fetchOne("SELECT COUNT(*) AS NUM FROM country WHERE name='" . $country . "'");
     if ($countcountry == 0) {
         $ipset = array("name" => $country, "users" => "1");
         $upd = $db->insert("country", $ipset);
     } else {
         $usercountry = $db->fetchOne("SELECT users FROM country WHERE name='" . $country . "'");
         $ipset = array("name" => $country, "users" => $usercountry + 1);
         $upd = $db->update("country", $ipset, "name='" . $country . "'");
     }
 }
 if (!empty($_SESSION['track'])) {