Esempio n. 1
0
 function checkMail($mbox)
 {
     $this->registry["logs"]->uid = $this->uid;
     $this->registry["tt"]->uid = $this->uid;
     $mail_array = array();
     $new = array();
     $err = false;
     $mailbox = $this->getMailbox($mbox);
     if ($mailbox["in_protocol"] == "IMAP") {
         if ($connect = imap_open('{' . $mailbox["in_server"] . ':' . $mailbox["in_port"] . '/' . $mailbox["in_protocol"] . '/' . $mailbox["in_ssl"] . '}INBOX', $mailbox["in_login"], $mailbox["in_password"])) {
             $this->mbox = $mailbox["email"];
             $msg = imap_search($connect, "ALL");
             for ($i = 0; $i < count($msg); $i++) {
                 if ($msg[$i] != null) {
                     $mailStructure = new Model_MailStructure();
                     $mailStructure->uid = $this->uid;
                     $mailStructure->connect = $connect;
                     $mailStructure->to = $mailbox["email"];
                     $mailStructure->mes_num = $msg[$i];
                     $mailStructure->uidl = imap_uid($connect, $msg[$i]);
                     if (!$this->issetMailFromId($mailStructure->uidl, $this->uid, $mbox)) {
                         $mailStructure->getHeader();
                         $mail_array = $mailStructure->fetchMail();
                         if ($mailStructure->emailTask) {
                             $this->saveMailTask($mail_array);
                             if ($mailStructure->notLog) {
                                 $string = "Новое письмо от " . $mail_array["mailbox"] . "@" . $mail_array["host"] . " -> " . $mailStructure->textMailAction;
                             } else {
                                 $string = "";
                             }
                         } elseif ($mailStructure->mailInTask) {
                             if ($tid = $this->registry["tt"]->issetTaskFromMail($mail_array["mailbox"] . "@" . $mail_array["host"])) {
                                 $mid = $this->saveMail($mail_array);
                                 $this->registry["tt"]->addComment($tid, null, 0, false, $mid);
                                 $this->registry["tt"]->SpamUsers("Новый комментарий", $tid);
                                 $string = "Новое письмо " . $mail_array["mailbox"] . "@" . $mail_array["host"] . " -> " . $mailStructure->textMailAction;
                             } else {
                                 $mid = $this->saveMail($mail_array);
                                 $tid = $this->registry["tt"]->addTask(0, $mailStructure->task, $mid);
                                 $this->registry["tt"]->SpamUsers("Новая задача", $tid);
                                 $string = "Новое письмо " . $mail_array["mailbox"] . "@" . $mail_array["host"] . " -> " . $mailStructure->textMailAction;
                             }
                         } else {
                             $mid = $this->saveMail($mail_array);
                             if ($tid = $this->registry["tt"]->issetTaskFromMail($mail_array["mailbox"] . "@" . $mail_array["host"])) {
                                 $this->registry["tt"]->addComment($tid, null, 0, false, $mid);
                                 $this->registry["tt"]->SpamUsers("Новый комментарий", $tid);
                                 $string = "Новое письмо " . $mail_array["mailbox"] . "@" . $mail_array["host"] . " -> " . $mailStructure->textMailAction;
                             } else {
                                 $string = "Новое письмо " . $mail_array["mailbox"] . "@" . $mail_array["host"];
                             }
                         }
                         if ($string != "") {
                             $this->registry["logs"]->set("mail", $string, "");
                         }
                     } else {
                         $mailStructure->getHeader();
                         if (!$mailbox["clear"]) {
                             $clear_date = date("YmdHis", mktime(date("H", $mailStructure->header->udate), date("i", $mailStructure->header->udate), date("s", $mailStructure->header->udate), date("m", $mailStructure->header->udate), date("d", $mailStructure->header->udate) + $mailbox["clear_days"], date("Y", $mailStructure->header->udate)));
                             if ($clear_date < date("YmdHis")) {
                                 $del = imap_delete($connect, $msg[$i]);
                             }
                         }
                     }
                 }
             }
             imap_expunge($connect);
             imap_close($connect);
         } else {
             $err = true;
         }
     } else {
         $retval = 0;
         if (!($fp = @fsockopen($mailbox["in_server"], $mailbox["in_port"]))) {
             $err = true;
         }
         if ($fp > 0) {
             $buf = fgets($fp, 1024);
             fputs($fp, "USER " . $mailbox["in_login"] . "\r\n");
             $buf = fgets($fp, 1024);
             fputs($fp, "PASS " . $mailbox["in_password"] . "\r\n");
             $buf = fgets($fp, 1024);
             fputs($fp, "STAT\r\n");
             $msg_num = fgets($fp, 1024);
             $msg_num = explode(" ", $msg_num);
             for ($i = 1; $i <= $msg_num[1]; $i++) {
                 fputs($fp, "UIDL " . $i . "\r\n");
                 $uidl = fgets($fp, 1024);
                 $uidl = explode(" ", $uidl);
                 if (!$this->issetMailFromId($uidl[2], $this->uid, $mbox)) {
                     $new[$i] = $uidl[2];
                 } else {
                     if (!$mailbox["clear"]) {
                         fputs($fp, "DELE " . $i . "\r\n");
                         $buf = fgets($fp, 1024);
                     }
                 }
             }
             fputs($fp, "QUIT\r\n");
             $buf = fgets($fp, 1024);
             fclose($fp);
         }
         if (count($new) > 0) {
             if (!($connect = imap_open('{' . $mailbox["in_server"] . ':' . $mailbox["in_port"] . '/' . $mailbox["in_protocol"] . '/' . $mailbox["in_ssl"] . '}INBOX', $mailbox["in_login"], $mailbox["in_password"]))) {
                 $err = true;
             }
         }
         foreach ($new as $key => $val) {
             $mailStructure = new Model_MailStructure();
             $mailStructure->uid = $this->uid;
             $mailStructure->connect = $connect;
             $mailStructure->to = $mailbox["email"];
             $mailStructure->mes_num = $key;
             $mailStructure->uidl = $val;
             $mailStructure->getHeader();
             $mail_array = $mailStructure->fetchMail();
             if ($mailStructure->emailTask) {
                 $this->saveMailTask($mail_array);
                 if ($mailStructure->notLog) {
                     $string = "Новое письмо " . $mail_array["mailbox"] . "@" . $mail_array["host"] . " -> " . $mailStructure->textMailAction;
                 } else {
                     $string = "";
                 }
             } elseif ($mailStructure->mailInTask) {
                 if ($tid = $this->registry["tt"]->issetTaskFromMail($mail_array["mailbox"] . "@" . $mail_array["host"])) {
                     $mid = $this->saveMail($mail_array);
                     $this->registry["tt"]->addComment($tid, null, 0, false, $mid);
                     $this->registry["tt"]->SpamUsers("Новый комментарий", $tid);
                     $string = "Новое письмо " . $mail_array["mailbox"] . "@" . $mail_array["host"] . " -> " . $mailStructure->textMailAction;
                 } else {
                     $mid = $this->saveMail($mail_array);
                     $tid = $this->registry["tt"]->addTask(0, $mailStructure->task, $mid);
                     $this->registry["tt"]->SpamUsers("Новая задача", $tid);
                     $string = "Новое письмо " . $mail_array["mailbox"] . "@" . $mail_array["host"] . " -> " . $mailStructure->textMailAction;
                 }
             } else {
                 $mid = $this->saveMail($mail_array);
                 if ($tid = $this->registry["tt"]->issetTaskFromMail($mail_array["mailbox"] . "@" . $mail_array["host"])) {
                     $this->registry["tt"]->addComment($tid, null, 0, false, $mid);
                     $this->registry["tt"]->SpamUsers("Новый комментарий", $tid);
                     $string = "Новое письмо " . $mail_array["mailbox"] . "@" . $mail_array["host"] . " -> " . $mailStructure->textMailAction;
                 } else {
                     $string = "Новое письмо " . $mail_array["mailbox"] . "@" . $mail_array["host"];
                 }
             }
             if ($string != "") {
                 $this->registry["logs"]->set("mail", $string, "");
             }
         }
         if (count($new) > 0 and !$err) {
             imap_close($connect);
         }
     }
     if ($err) {
         return false;
     } else {
         return true;
     }
 }
Esempio n. 2
0
 function checkMail($mbox)
 {
     $mail_array = array();
     $new = array();
     $err = false;
     $mailbox = $this->getMailbox($mbox);
     if ($mailbox["in_protocol"] == "IMAP") {
         if ($connect = imap_open('{' . $mailbox["in_server"] . ':' . $mailbox["in_port"] . '/' . $mailbox["in_protocol"] . '/' . $mailbox["in_ssl"] . '}INBOX', $mailbox["in_login"], $mailbox["in_password"])) {
             $this->mbox = $mailbox["email"];
             $msg = imap_search($connect, "ALL");
             for ($i = 0; $i < count($msg); $i++) {
                 if ($msg[$i] != null) {
                     $mailStructure = new Model_MailStructure();
                     $mailStructure->connect = $connect;
                     $mailStructure->to = $mailbox["email"];
                     $mailStructure->mes_num = $msg[$i];
                     $mailStructure->uidl = imap_uid($connect, $msg[$i]);
                     if (!$this->issetMailFromId($mailStructure->uidl, $mbox)) {
                         $mailStructure->getHeader();
                         $mail_array = $mailStructure->fetchMail();
                         $mid = $this->saveMail($mail_array);
                     } else {
                         $mailStructure->getHeader();
                         if (!$mailbox["clear"]) {
                             $clear_date = date("YmdHis", mktime(date("H", $mailStructure->header->udate), date("i", $mailStructure->header->udate), date("s", $mailStructure->header->udate), date("m", $mailStructure->header->udate), date("d", $mailStructure->header->udate) + $mailbox["clear_days"], date("Y", $mailStructure->header->udate)));
                             if ($clear_date < date("YmdHis")) {
                                 $del = imap_delete($connect, $msg[$i]);
                             }
                         }
                     }
                 }
             }
             imap_expunge($connect);
             imap_close($connect);
         } else {
             $err = true;
         }
     } else {
         $retval = 0;
         if (!($fp = @fsockopen($mailbox["in_server"], $mailbox["in_port"]))) {
             $err = true;
         }
         if ($fp > 0) {
             $buf = fgets($fp, 1024);
             fputs($fp, "USER " . $mailbox["in_login"] . "\r\n");
             $buf = fgets($fp, 1024);
             fputs($fp, "PASS " . $mailbox["in_password"] . "\r\n");
             $buf = fgets($fp, 1024);
             fputs($fp, "STAT\r\n");
             $msg_num = fgets($fp, 1024);
             $msg_num = explode(" ", $msg_num);
             for ($i = 1; $i <= $msg_num[1]; $i++) {
                 fputs($fp, "UIDL " . $i . "\r\n");
                 $uidl = fgets($fp, 1024);
                 $uidl = explode(" ", $uidl);
                 if (!$this->issetMailFromId($uidl[2], $mbox)) {
                     $new[$i] = $uidl[2];
                 } else {
                     if (!$mailbox["clear"]) {
                         fputs($fp, "DELE " . $i . "\r\n");
                         $buf = fgets($fp, 1024);
                     }
                 }
             }
             fputs($fp, "QUIT\r\n");
             $buf = fgets($fp, 1024);
             fclose($fp);
         }
         if (count($new) > 0) {
             if (!($connect = imap_open('{' . $mailbox["in_server"] . ':' . $mailbox["in_port"] . '/' . $mailbox["in_protocol"] . '/' . $mailbox["in_ssl"] . '}INBOX', $mailbox["in_login"], $mailbox["in_password"]))) {
                 $err = true;
             }
         }
         foreach ($new as $key => $val) {
             $mailStructure = new Model_MailStructure();
             $mailStructure->connect = $connect;
             $mailStructure->to = $mailbox["email"];
             $mailStructure->mes_num = $key;
             $mailStructure->uidl = $val;
             $mailStructure->getHeader();
             $mail_array = $mailStructure->fetchMail();
             $mid = $this->saveMail($mail_array);
         }
         if (count($new) > 0 and !$err) {
             imap_close($connect);
         }
     }
     if ($err) {
         return false;
     } else {
         return true;
     }
 }