ini_set('memory_limit', '512M');
require_once '../classes/stdf.php';
require_once '../classes/memBuff.php';
require_once '../classes/smtp2.php';
require_once '../classes/users.php';
/*
 * Логин пользователя от кого осуществляется рассылка
 * 
 */
$sender = 'admin';
// Работодателям
$sql = "SELECT u.uid, u.email, u.login, u.uname, u.usurname, u.subscr, usk.key AS ukey\nFROM employer AS u\nLEFT JOIN users_subscribe_keys AS usk ON usk.uid = u.uid\nWHERE substring(subscr from 8 for 1)::integer = 1 AND is_banned = B'0' AND is_pro = true";
//$sql = "SELECT u.uid, u.email, u.login, u.uname, u.usurname, u.subscr, usk.key AS ukey FROM users AS u LEFT JOIN users_subscribe_keys AS usk ON usk.uid = u.uid WHERE login = '******'"; // TEST!!
$eHost = $GLOBALS['host'];
$eSubject = 'Free-lance.ru: у нас можно обмениваться контактами';
$mail = new smtp2();
$img1 = $mail->cid();
$img2 = $mail->cid();
$img3 = $mail->cid();
$img4 = $mail->cid();
$img5 = $mail->cid();
$img30 = $mail->cid();
$mail->attach(ABS_PATH . '/images/letter/1.png', $img1);
$mail->attach(ABS_PATH . '/images/letter/2.png', $img2);
$mail->attach(ABS_PATH . '/images/letter/3.png', $img3);
$mail->attach(ABS_PATH . '/images/letter/4.png', $img4);
$mail->attach(ABS_PATH . '/images/letter/5.png', $img5);
$mail->attach(ABS_PATH . '/images/letter/30.png', $img30);
$link = "{$eHost}/gift_pro.php?utm_source=newsletter4&utm_medium=email&utm_campaign=podarok_emp&uid=%%%UID%%%";
ob_start();
?>
ini_set('max_execution_time', '0');
ini_set('memory_limit', '512M');
require_once '../classes/stdf.php';
require_once '../classes/memBuff.php';
require_once '../classes/smtp2.php';
/**
 * Логин пользователя от кого осуществляется рассылка
 * 
 */
$sender = 'admin';
// Работодателям
$sql = "SELECT uid, email, login, uname, usurname, subscr FROM freelancer WHERE substring(subscr from 8 for 1)::integer = 1 AND is_banned = B'0' AND ( NOW() - last_time ) > '1 year'";
//$sql = "SELECT uid, email, login, uname, usurname, subscr FROM users WHERE login IN ('frfr3', 'Mishustik', 'positive-side')";
$eHost = $GLOBALS['host'];
$eSubject = "Free-lance: мы дарим вам профессиональный аккаунт";
$mail = new smtp2();
$img29 = $mail->cid();
$img6 = $mail->cid();
$img27 = $mail->cid();
$mail->attach(ABS_PATH . '/images/letter/29.png', $img29);
$mail->attach(ABS_PATH . '/images/letter/6.png', $img6);
$mail->attach(ABS_PATH . '/images/letter/27.png', $img27);
$link = "{$eHost}/gift_pro.php?utm_source=newsletter4&utm_medium=email&utm_campaign=podarok_free&uid=%%%UID%%%";
ob_start();
?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
<title></title>
</head>
<body bgcolor="#ffffff" marginwidth="0" marginheight="0" link="#396ea9"  bottommargin="0" topmargin="0" rightmargin="0" leftmargin="0" style="margin:0">
 * */
ini_set('max_execution_time', '0');
ini_set('memory_limit', '512M');
require_once '../classes/stdf.php';
require_once '../classes/memBuff.php';
require_once '../classes/smtp2.php';
/*
 * Логин пользователя от кого осуществляется рассылка
 * 
 */
$sender = 'admin';
// ищем фрилансеров у которых не было никогда ПРО
$sql = "SELECT f.uid, f.login, f.uname, f.usurname, f.email\n    FROM freelancer f\n    LEFT JOIN orders o\n        ON o.from_id = f.uid\n        AND o.ordered = TRUE\n        AND o.tarif IN (1,2,3,4,5,6,15,16,28,35,42,47,48,49,50,51,52,76)\n    WHERE f.active = TRUE\n    AND f.is_banned = B'0'\n    AND substring(subscr from 8 for 1)::integer = 1\n    AND o.id IS NULL\n    GROUP BY f.uid\n    ";
$eHost = $GLOBALS['host'];
$eSubject = 'Free-lance.ru: попробуйте аккаунт PRO';
$mail = new smtp2();
$imgPro = $mail->cid();
$imgFPro = $mail->cid();
$img7 = $mail->cid();
$img20 = $mail->cid();
$img21 = $mail->cid();
$img22 = $mail->cid();
$img18 = $mail->cid();
$mail->attach(ABS_PATH . '/images/letter/pro.png', $imgPro);
$mail->attach(ABS_PATH . '/images/pro/fpro.gif', $imgFPro);
$mail->attach(ABS_PATH . '/images/letter/7.png', $img7);
$mail->attach(ABS_PATH . '/images/letter/20.png', $img20);
$mail->attach(ABS_PATH . '/images/letter/21.png', $img21);
$mail->attach(ABS_PATH . '/images/icons/del.gif', $img22);
$mail->attach(ABS_PATH . '/images/promo-icons/big/18.png', $img18);
ob_start();
 * 
 */
//$sender = 'jb_admin';
$sender = 'admin';
$sql = "SELECT uid, email, login, uname, usurname, subscr FROM freelancer WHERE substring(subscr from 8 for 1)::integer = 1 AND is_banned = B'0'";
//$sql = "SELECT uid, email, login, uname, usurname FROM users WHERE email in ('*****@*****.**', '*****@*****.**', '*****@*****.**')";
$pHost = str_replace('http://', '', $GLOBALS['host']);
if (defined('HTTP_PREFIX')) {
    $pHttp = str_replace('://', '', HTTP_PREFIX);
    // Введено с учетом того планируется включение HTTPS на серверах (для писем в ЛС)
} else {
    $pHttp = 'http';
}
$eHost = $GLOBALS['host'];
$pMessage = "\nЗдравствуйте!\n\nМногие наши пользователи просили вернуть возможность обмениваться контактами на сайте. Ваше мнение важно для нас, и мы прислушались к нему. С сегодняшнего дня фрилансеры с http:/{аккаунтом PRO}/{$pHost}/payed/?utm_source=newsletter4&utm_medium=email&utm_campaign=new_pro_freelancer могут оставлять контактную информацию (телефон, e-mail, icq, Skype и т.д.) в своем профиле, сообщениях, ответах на проекты и конкурсы. \n\nДругие преимущества PRO:\n\n<ul><li>размещение наверху каталога фрилансеров,</li><li>неограниченное количество ответов на проекты,</li><li>возможность откликаться на проекты с пометкой «Только для PRO», бюджет которых на 30% выше остальных проектов,</li><li>рейтинг рассчитывается по формуле с повышающими коэффициентами,</li><li>на личной странице фрилансеров PRO нет рекламы.</li></ul>Хотим обратить ваше внимание, что прямые контакты позволяют вам быстрее договориться с заказчиком, но увеличивают риск мошенничества с его стороны. Чтобы быть уверенными в том, что необоснованных претензий от клиента не будет, а вы гарантированно получите гонорар за выполненную работу, рекомендуем проводить проекты через «http:/{Сделку Без Риска}/{$pHost}/sbr/?utm_source=newsletter4&utm_medium=email&utm_campaign=new_pro_freelancer<span>»</span>. \n\nБолее подробно о нововведениях читайте в «http:/{Блогах}/{$pHost}/blogs/?utm_source=newsletter4&utm_medium=email&utm_campaign=new_pro_freelancer<span>»</span>, а о PRO &ndash; в разделе «http:/{Помощи}/{$pHost}/help/?q=789&utm_source=newsletter4&utm_medium=email&utm_campaign=new_pro_freelancer<span>»</span>. \n\nПо всем возникающим вопросам вы можете обращаться в нашу http:/{службу поддержки}/{$pHost}/help/?all<i>.</i>\nВы можете отключить уведомления на http:/{странице &laquo;Уведомления/Рассылка&raquo;}/{$pHost}/users/%USER_LOGIN%/setup/mailer/<span> вашего</span> аккаунта.\n\nПриятной работы,\nКоманда http:/{Free-lance.ru}/{$pHost}/\n";
$mail = new smtp2();
$cid1 = $mail->cid();
$cid2 = $mail->cid();
$cid3 = $mail->cid();
$cid4 = $mail->cid();
$cid5 = $mail->cid();
$cid6 = $mail->cid();
$cid7 = $mail->cid();
$cid8 = $mail->cid();
$cid9 = $mail->cid();
$cid10 = $mail->cid();
$cid11 = $mail->cid();
$mail->attach(ABS_PATH . '/images/mailer/30/1.png', $cid1);
$mail->attach(ABS_PATH . '/images/mailer/30/2.png', $cid2);
$mail->attach(ABS_PATH . '/images/mailer/30/3.png', $cid3);
$mail->attach(ABS_PATH . '/images/mailer/30/4.png', $cid4);
$sender = 'admin';
// Только не pro фрилансерам, активированным (active = true), незабаненным (is_banned = B'0'), с включенными рассылками
$sql = "SELECT uid, email, login, uname, usurname, subscr FROM employer\n        WHERE substring(subscr from 8 for 1)::integer = 1 AND is_banned = B'0' AND is_pro = false";
//freelancer
//$sql = "SELECT uid, email, login, uname, usurname FROM users WHERE email IN('*****@*****.**', '*****@*****.**')"; // !!
if (defined('HTTP_PREFIX')) {
    $pHttp = str_replace("://", "", HTTP_PREFIX);
    // Введено с учетом того планируется включение HTTPS на серверах (для писем в ЛС)
} else {
    $pHttp = 'http';
}
$pHost = str_replace("{$pHttp}://", "", $GLOBALS['host']);
$eHost = $GLOBALS['host'];
$pMessage = "Здравствуйте!\n\nЕсли вы не успеваете следить за бурной жизнью нашего портала, напоминаем вам, что мы сделали доступными контактные данные (e-mail, ICQ, Skype и т.д.) пользователей с аккаунтом PRO.\n\nТеперь профессиональный аккаунт для работодателей сильно изменился и дает еще больше преимуществ.  С PRO вы видите контакты всех фрилансеров, в то время как для владельцев начального аккаунта открыты контакты только 5% фрилансеров – тех, кто приобрел PRO. А стоимость профессионального аккаунта – всего 10 FM в месяц!\n\nКак правило, фрилансеры с PRO сильно загружены под Новый Год, ведь количество заказов перед праздниками резко возрастает. Не ограничивайте себя в выборе и найдите среди всех 800 000 пользователей, зарегистрированных на нашем сайте, исполнителя, который вам действительно подходит. \n\n{$pHttp}:/{Купить аккаунт PRO}/{$pHost}/payed-emp/?utm_source=newsletter4&utm_medium=email&utm_campaign=you_should_PRO_emp\n\nПо всем возникающим вопросам вы можете обращаться в нашу {$pHttp}:/{службу поддержки}/{$pHost}/help/?all<i>.</i>\nВы можете отключить уведомления на {$pHttp}:/{странице &laquo;Уведомления/Рассылка&raquo;}/{$pHost}/users/%USER_LOGIN%/setup/mailer/<span> вашего</span> аккаунта.\n\nПриятной работы,\nКоманда {$pHttp}:/{Free-lance.ru}/{$pHost}/\n";
$eSubject = "Free-lance.ru: мы открыли контакты пользователей PRO";
$mail = new smtp2();
$cid1 = $mail->cid();
$cid2 = $mail->cid();
$cid3 = $mail->cid();
$mail->attach(ABS_PATH . '/images/letter/11.png', $cid1);
$mail->attach(ABS_PATH . '/images/letter/14.png', $cid2);
$mail->attach(ABS_PATH . '/images/letter/15.png', $cid3);
$eMessage = '
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
<title></title>
</head>
<body bgcolor="#ffffff" marginwidth="0" marginheight="0" link="#396ea9"  bottommargin="0" topmargin="0" rightmargin="0" leftmargin="0" style="margin:0">

<table bgcolor="#ffffff" width="100%">
Example #6
0
 /**
  * Закрывает соединение с SMTP сервером.
  * Метод вызывается в деструкторе, при уничтожении последнего созданного объекта класса,
  * поэтому вызывать его явно не требуется.
  * Если его вызвать до того, как будет уничтожен последний объект и какой-либо объект в дальнейшем
  * еще будет отсылать письма, то соединение создастся заново (переподключится).
  *
  * @return bool TRUE если соединение закрыто; FALSE если закрыть не удалось
  */
 public function _close()
 {
     if (self::$socket) {
         $this->_cmd('QUIT');
         fclose(self::$socket);
         self::$socket = null;
     }
     return true;
 }
 * 
 */
$sender = 'admin';
// Работодателям
$sql = "SELECT u.uid, u.email, u.login, u.uname, u.usurname, u.subscr, usk.key AS ukey\nFROM users AS u\nLEFT JOIN users_subscribe_keys AS usk ON usk.uid = u.uid\nWHERE substring(subscr from 8 for 1)::integer = 1 AND is_banned = B'0' AND (NOW() - last_time < '1 year')";
if ($_GET['test'] == 1) {
    $sql = "SELECT u.uid, u.email, u.login, u.uname, u.usurname, u.subscr, usk.key AS ukey FROM users AS u LEFT JOIN users_subscribe_keys AS usk ON usk.uid = u.uid WHERE login IN ('land_f', 'land_e2', 'bolvan')";
    // TEST!!
}
if ($_GET['to'] != null) {
    $sql = "SELECT u.uid, u.email, u.login, u.uname, u.usurname, u.subscr, usk.key AS ukey FROM users AS u LEFT JOIN users_subscribe_keys AS usk ON usk.uid = u.uid WHERE email = '{$_GET['to']}'";
    // TEST!!
}
$eHost = $GLOBALS['host'];
$eSubject = 'Безопасная Сделка: теперь еще лучше';
$mail = new smtp2();
$img1 = $mail->cid();
$img2 = $mail->cid();
$img3 = $mail->cid();
$img4 = $mail->cid();
$img5 = $mail->cid();
$img6 = $mail->cid();
$mail->attach(ABS_PATH . '/images/letter/160720131.png', $img1);
$mail->attach(ABS_PATH . '/images/letter/170720131.gif', $img2);
$mail->attach(ABS_PATH . '/images/letter/160720133.png', $img3);
$mail->attach(ABS_PATH . '/images/letter/160720134.png', $img4);
$mail->attach(ABS_PATH . '/images/letter/160720135.png', $img5);
$mail->attach(ABS_PATH . '/images/letter/160720136.png', $img6);
ob_start();
?>
<html>
 * */
ini_set('max_execution_time', '0');
ini_set('memory_limit', '512M');
require_once '../classes/stdf.php';
require_once '../classes/memBuff.php';
require_once '../classes/smtp2.php';
/**
 * Логин пользователя от кого осуществляется рассылка
 * 
 */
$sender = 'admin';
// Работодателям
$sql = "SELECT uid, email, login, uname, usurname, subscr FROM employer WHERE substring(subscr from 8 for 1)::integer = 1 AND is_banned = B'0'";
$eHost = $GLOBALS['host'];
$eSubject = "Free-lance.ru: Отдохните, а мы поработаем за вас";
$mail = new smtp2();
$img17 = $mail->cid();
$img16 = $mail->cid();
$mail->attach(ABS_PATH . '/images/letter/17.png', $img17);
$mail->attach(ABS_PATH . '/images/letter/16.png', $img16);
ob_start();
?>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
        <title></title>
    </head>
    <body bgcolor="#ffffff" marginwidth="0" marginheight="0" link="#396ea9"  bottommargin="0" topmargin="0" rightmargin="0" leftmargin="0" style="margin:0">

        <table bgcolor="#ffffff" width="100%">
            <tbody><tr>
 * */
ini_set('max_execution_time', '0');
ini_set('memory_limit', '512M');
require_once '../classes/stdf.php';
require_once '../classes/memBuff.php';
require_once '../classes/smtp2.php';
/*
 * Логин пользователя от кого осуществляется рассылка
 * 
 */
$sender = 'admin';
// Всем пользователям, активированным (active = true), незабаненным (is_banned = B'0'), с включенными рассылками (substring(subscr from 8 for 1)::integer = 1)
$sql = "SELECT uid, email, login, uname, usurname, subscr FROM users WHERE substring(subscr from 8 for 1)::integer = 1 AND is_banned = B'0' AND active = true";
$eHost = $GLOBALS['host'];
$eSubject = 'Поздравляем с Новым годом!';
$mail = new smtp2();
$cid1 = $mail->cid();
$cid2 = $mail->cid();
$mail->attach(ABS_PATH . '/images/letter/sneg.gif', $cid1);
//$mail->attach(ABS_PATH . '/images/letter/ng13.png', $cid2);
$eMessage = '
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
    <title></title>
</head>
<body bgcolor="#ffffff" marginwidth="0" marginheight="0" link="#396ea9"  bottommargin="0" topmargin="0" rightmargin="0" leftmargin="0" style="margin:0">

<table bgcolor="#ffffff" width="100%">
    <tbody>
        <tr>
Example #10
0
 public function process_event(&$event)
 {
     // проверяем нагрузку процессора за последнюю минуту:
     // если она больше LOAD_AVG_S1 - выключаем массовую рассылку, только сообщения с приоритетом <= 1
     // если она больше LOAD_AVG_S2 - выключаем рассылку полностью
     // имеет смысл только если рассылка идет с localhost
     $load = sys_getloadavg();
     if ($this->load >= LOAD_AVG_S1 && $load[0] < LOAD_AVG_S1) {
         $this->log->notice("Processor load is normal.");
     }
     $this->load = $load[0];
     if ($this->load >= LOAD_AVG_S2) {
         $this->log->notice("Processor load is very high! Work temporary stopped.");
         sleep(10);
         $this->DB->query("SELECT mail.task(?)", $event->type);
         return PGQ_EVENT_OK;
     }
     if ($this->load >= LOAD_AVG_S1) {
         $this->log->notice("Processor load is high!");
         $masssend = FALSE;
     } else {
         if ($this->mailqCount < MAILQ_MASS_STOP) {
             $masssend = TRUE;
         }
     }
     // проверяем количество сообщение в очереди с интервалом MAILQ_INTERVAL
     // если сообщений больше чем MAILQ_MASS_STOP, то массовая рассылка отключает,
     // рассылаются сообщения только с приоритетом <= 1
     // имеет смысл только если рассылка идет с localhost
     if (time() - $this->mailqTime > MAILQ_INTERVAL) {
         $this->mailqTime = time();
         $mailqCount = 0;
         if (preg_match('/([0-9]+)/', exec('find /var/spool/postfix/active -type f | wc -l'), $o)) {
             $mailqCount = $o[1];
         }
         if ($mailqCount >= MAILQ_MASS_STOP) {
             $this->log->notice("Postfix queue is too big ({$mailqCount} mails).");
             $masssend = FALSE;
         } else {
             if ($this->mailqCount >= MAILQ_MASS_STOP && $mailqCount < MAILQ_MASS_STOP) {
                 $this->log->notice("Postfix queue is normal ({$mailqCount} mails).");
                 if ($this->load < LOAD_AVG_S1) {
                     $masssend = TRUE;
                 }
             }
         }
         $this->mailqCount = $mailqCount;
     }
     switch ($event->type) {
         case 'work':
             $successfully = 0;
             $processed = 0;
             //$queues       = array();
             if (!$this->smtp->Connect()) {
                 $this->log->notice("Error: Doesn't connect to SMTP server");
                 if ($this->noConnect > NO_CONNECT_STOP) {
                     $this->log->notice("Error: Too many disconnects from STMP server. Consumer stopped.");
                     $this->stop();
                     return PGQ_EVENT_FAILED;
                 }
                 $this->noConnect++;
                 sleep(5);
                 $this->DB->query("SELECT mail.task('work')");
                 return PGQ_EVENT_OK;
             }
             $this->noConnect = 0;
             $res = $this->DB->query("SELECT * FROM mail.next_batch(?i, ?i)", EMAILS_AMOUNT, $masssend ? NULL : 1);
             while ($row = pg_fetch_assoc($res)) {
                 ///// Тестовая хрень smtp2.php (jb) ////////////////////////////////////////////////
                 if ($row['mime'] == 'SMTP2') {
                     //$this->log->notice("SMTP2");
                     $smtp2 = new smtp2();
                     $s = array();
                     $r = array();
                     if (empty($row['extra'])) {
                         $exts = array();
                     } else {
                         $exts = preg_split('/(?<!&)&(?!&)/', $row['extra']);
                     }
                     $exts[] = 'recipient=' . $smtp2->encodeEmail($row['recipient']);
                     for ($i = 0; $i < count($exts); $i++) {
                         $ext = explode('=', $exts[$i], 2);
                         if (count($ext) == 2) {
                             $s[] = "/\\%\\%\\%{$ext[0]}\\%\\%\\%/i";
                             $r[] = str_replace('&&', '&', $ext[1]);
                         }
                     }
                     $message = preg_replace($s, $r, $row['message']);
                     $success = $smtp2->mail($row['sender'], $row['recipient'], $message);
                     //$this->DB->query("SELECT mail.val(?, ?)", "mailid:{$row['priority']}", $row['id']);
                     //$successfully = $successfully + (int) $success;
                     //$processed++;
                     //$smtp2->close();
                     unset($smtp2);
                 } else {
                     ///////////////////////////////////////////////////////////////////////////////////
                     if ($row['sender']) {
                         $this->smtp->from = $row['sender'];
                     }
                     $this->smtp->recipient = $row['recipient'];
                     $this->smtp->subject = $row['subject'];
                     if ($row['extra']) {
                         $s = array();
                         $r = array();
                         $exts = preg_split('/(?<!&)&(?!&)/', $row['extra']);
                         for ($i = 0; $i < count($exts); $i++) {
                             $ext = explode('=', $exts[$i], 2);
                             if (count($ext) == 2) {
                                 $s[] = "/%{$ext[0]}%/i";
                                 $r[] = str_replace('&&', '&', $ext[1]);
                             }
                         }
                         $this->smtp->message = preg_replace($s, $r, $row['message']);
                     } else {
                         $this->smtp->message = $row['message'];
                     }
                     $files = array();
                     if (!empty($row['files']) && $row['files'] != '{}') {
                         $row['files'] = $this->DB->array_to_php($row['files']);
                         if ($row['files']) {
                             foreach ($row['files'] as $file) {
                                 $files[] = new CFile($file);
                             }
                             $files = $this->smtp->CreateAttach($files);
                         }
                     }
                     $success = $this->smtp->SmtpMail($row['mime'], $files);
                     ////////////////////////////////////////////////
                 }
                 ////////////////////////////////////////////////
                 //$this->DB->query("UPDATE mail.recipients SET success = ?b, sended = CURRENT_TIMESTAMP WHERE id = ?i", $success, $row['id']);
                 $this->DB->query("SELECT mail.val(?, ?)", "mailid:{$row['priority']}", $row['id']);
                 $successfully = $successfully + (int) $success;
                 //$queues[]     = $row['queue_id'];
                 $processed++;
             }
             $this->smtp->Close();
             /*if ( $queues ) {
                   $this->DB->query("UPDATE mail.queue SET last_batch = CURRENT_TIMESTAMP WHERE id IN (?l)", $queues);
               }*/
             if ($processed >= EMAILS_AMOUNT) {
                 $this->DB->query("SELECT mail.task('work')");
             } else {
                 if ($this->clearTime + CLEAR_INTERVAL < time()) {
                     $this->clearTime = time();
                     $this->DB->query("SELECT mail.task('clear')");
                 }
             }
             $this->log->notice("{$processed} email(s) sended. {$successfully} success.");
             $this->sleepTime = time();
             break;
         case 'clear':
             if ($this->load < LOAD_AVG_S1) {
                 $c = $this->DB->val("SELECT mail.clear()");
                 $this->log->notice("Queue cleared success.");
             }
             break;
     }
     return PGQ_EVENT_OK;
 }