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; } }
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; } }