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 – в разделе «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:/{странице «Уведомления/Рассылка»}/{$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}:/{странице «Уведомления/Рассылка»}/{$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%">
/** * Закрывает соединение с 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>
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; }