public function cron() { require '../../core/PEAR/Mail.php'; require 'Mail/mime.php'; $queue = MailQueue::getAllMailQueues(self::SEND_PER_CRON_JOB); $this->smarty->assign('site', 'http://192.168.6.109'); foreach ($queue as $q) { $content = new MailSendOut($q->getSendOut()); $user = new MailUser($q->getUser()); $crlf = "\n"; $hdrs = array('From' => $content->getFromName() . '<' . $content->getFromAddress() . '>', 'Subject' => $content->getSubject(), 'To' => $user->getFirstName() . ' ' . $user->getLastName() . '<' . $user->getEmail() . '>', 'Date' => date('r', strtotime($content->getTimestamp()))); $this->smarty->assign('content', $content); $this->smarty->assign('user', $user); $body = $this->smarty->fetch('admin/shell.tpl'); $mime = new Mail_mime($crlf); $mime->setHTMLBody($body); //do not ever try to call these lines in reverse order $body = $mime->get(); $hdrs = $mime->headers($hdrs); $mail =& Mail::factory('sendmail'); $mail->send($user->getEmail(), $hdrs, $body); $log = new MailDeliveryLog(); $log->setUser($user->getId()); $log->setSendOut($content->getId()); $log->setQueue($q->getId()); $log->save(); $q->delete(); } }