$mail->message = $eMessage; // текст письма $mail->recipient = ''; // свойство 'получатель' оставляем пустым $spamid = $mail->masssend(); //if (!$spamid) die('Failed!'); // с этого момента рассылка создана, но еще никому не отправлена! // допустим нам нужно получить список получателей с какого-либо запроса $i = 0; $mail->recipient = array(); $DB->query("DELETE FROM week_pro_action WHERE is_emp = 't'"); //очистить таблицу логирования обращений за подарком (по идее только на бете нужно, но кто его знает) $res = $DB->query($sql); while ($row = pg_fetch_assoc($res)) { if (strlen($row['ukey']) == 0) { $row['ukey'] = users::writeUnsubscribeKey($row['uid']); } $mail->recipient[] = array('email' => "{$row['uname']} {$row['usurname']} [{$row['login']}] <{$row['email']}>", 'extra' => array('USER_LOGIN' => $row['login'], 'UID' => $row['uid'], 'UNSUBSCRIBE_KEY' => $row['ukey'])); if (++$i >= 30000) { $mail->bind($spamid); $mail->recipient = array(); $i = 0; } $DB->insert('week_pro_action', array('uid' => $row['uid'], 'is_emp' => 't')); ++$cnt; } if ($i) { $mail->bind($spamid); $mail->recipient = array(); } echo "OK. Total: {$cnt} users\n";
$mail->recipient = ''; // свойство 'получатель' оставляем пустым $spamid = $mail->send('text/html'); if (!$spamid) { die('Failed!'); } // с этого момента рассылка создана, но еще никому не отправлена! // допустим нам нужно получить список получателей с какого-либо запроса $i = 0; $mail->recipient = array(); $res = $DB->query($sql); while ($row = pg_fetch_assoc($res)) { if ($row['email'] == '') { continue; } if (strlen($row['ukey']) == 0) { $row['ukey'] = users::writeUnsubscribeKey($row["uid"], true); } $mail->recipient[] = array('email' => $row['email'], 'extra' => array('first_name' => $row['uname'], 'last_name' => $row['usurname'], 'USER_LOGIN' => $row['login'], 'SBR_ID' => $row['sbr_id'], 'DATE_SBR' => date('d.m.Y', strtotime($row['closed'])), 'UNSUBSCRIBE_KEY' => $row['ukey'])); if (++$i >= 30000) { $mail->bind($spamid); $mail->recipient = array(); $i = 0; } $cnt++; } if ($i) { $mail->bind($spamid); $mail->recipient = array(); } echo "OK. Total: {$cnt} users\n";
/** * Возвращает email и uid пользователя по его ключу для отписки от рассылки * @return string ключ для отписки от рассылки */ function GetUnsubscribeKey($login) { global $DB; $row = $DB->row("\n SELECT usk.key, u.uid FROM users u \n LEFT JOIN users_subscribe_keys AS usk ON u.uid = usk.uid\n WHERE u.login = '******'\n "); $val = $row["key"]; if (!$val) { return users::writeUnsubscribeKey($row["uid"]); } return $val; }
public function SpamFromMasssending($msgid, $spamid, $recipients) { $DB = new DB('master'); $messages = new messages(); if (empty($spamid) && empty($recipients)) { if (!($message = $messages->GetMessage($msgid))) { return 0; } // рассылка пользователям (подготовка) $this->recipient = ''; $this->subject = "Новое сообщение на FL.ru"; $msg_text = "\n<a href='{$GLOBALS['host']}/users/{$message['from_login']}{$this->_addUrlParams('b')}'>{$message['from_uname']} {$message['from_usurname']}</a> [<a href='{$GLOBALS['host']}/users/{$message['from_login']}{$this->_addUrlParams('b')}'>{$message['from_login']}</a>]\nнаписал(а) вам новое сообщение на сайте FL.ru.<br />\n<br />\n---------- \n<br />\n" . $this->ToHtml(LenghtFormatEx(strip_tags($message['msg_text']), 300)) . "\n<br />\n<br />\n<br />\n<a href='{$GLOBALS['host']}/contacts/?from={$message['from_login']}{$this->_addUrlParams('b', '&')}'>{$GLOBALS['host']}/contacts/?from={$message['from_login']}</a>\n<br />\n<br />\n------------\n"; $this->message = $this->GetHtml('%USER_NAME%', $msg_text, array('header' => 'default', 'footer' => 'simple')); return $this->send('text/html', $message['files'] == '{}' ? array() : $DB->array_to_php($message['files'])); } else { if (empty($recipients)) { return 0; } $this->recipient = array(); $res = $DB->query("SELECT u.*, usk.key AS unsubscribe_key FROM users AS u LEFT JOIN users_subscribe_keys AS usk ON usk.uid = u.uid WHERE u.uid IN (?l)", $recipients); while ($row = pg_fetch_assoc($res)) { if (!$row['unsubscribe_key']) { $row['unsubscribe_key'] = users::writeUnsubscribeKey($row["uid"]); } $this->recipient[] = array('email' => "{$row['uname']} {$row['usurname']} [{$row['login']}] <{$row['email']}>", 'extra' => array('USER_NAME' => $row['uname'], 'USER_SURNAME' => $row['usurname'], 'USER_LOGIN' => $row['login'], 'UNSUBSCRIBE_KEY' => $row['unsubscribe_key'])); } return $this->bind($spamid); } }
/** * Уведомление Заказчикам о том, что надо зарезервировать деньги через сутки и трое суток после создания сделки. */ public function activateAccountNotice() { $DB = new DB('master'); $host = $GLOBALS['host']; $this->subject = 'Последний день для активации аккаунта'; $message = "<p>Пожалуйста, активируйте ваш аккаунт %NAME_LOGIN% в течении суток.<p>\n <p>Для активации достаточно перейти по указанной ссылке или скопировать ее в адресную строку браузера:</p>\n <p><a href='%LINK%' target='_blank'>%LINK%</a></p>\n <p>При возникновении проблем с активацией аккаунта рекомендуем вам <a href='https://feedback.fl.ru/' target='_blank'>ознакомиться с инструкцией</a> или <a href='https://feedback.fl.ru/' target='_blank'>написать нам</a>. Мы обязательно вам поможем.</p>\n <p>Информацию о резервировании и проведении сделок, а также ответы на все интересующие вопросы вы можете найти в нашем <a href='https://feedback.fl.ru/' target='_blank'>сообществе поддержки</a>.</p>\n "; $hours = 48; $time_limit = $hours + 24; $query = "SELECT u.email, u.login, u.uname, u.usurname, usk.key AS ukey, u.uid, ac.code\n FROM users AS u\n LEFT JOIN users_subscribe_keys AS usk ON usk.uid = u.uid\n LEFT JOIN activate_code AS ac ON ac.user_id = u.uid\n WHERE active = false \n AND NOW() - last_time > '{$hours} hours'::interval\n AND NOW() - last_time < '{$time_limit} hours'::interval;"; if ($_GET['debug'] == 1 && $_GET['activate'] == 1) { $query = $DB->parse('SELECT u.email, u.login, u.uname, u.usurname, usk.key AS ukey, u.uid, ac.code FROM users AS u LEFT JOIN users_subscribe_keys AS usk ON usk.uid = u.uid LEFT JOIN activate_code AS ac ON ac.user_id = u.uid WHERE u.login = ? LIMIT 1', $_GET['login']); } $users = $DB->rows($query); $this->message = $this->GetHtml(false, $message, array('header' => 'noname', 'footer' => 'feedback_default'), array('target_footer' => true)); $this->recipient = ''; $massId = $this->send('text/html'); require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/users.php'; $i = 0; $cnt = 0; $this->recipient = array(); foreach ($users as $row) { if ($row['email'] == '') { continue; } if (strlen($row['ukey']) == 0) { $row['ukey'] = users::writeUnsubscribeKey($row['uid'], true); } $link = $host . "/registration/activate.php?code={$row['code']}"; $name = trim($row['uname'] . ' ' . $row['usurname']); $name_login = ($name ? $name . ', ' : '') . $row['login']; $this->recipient[] = array('email' => $row['email'], 'extra' => array('USER_LOGIN' => $row['login'], 'UNSUBSCRIBE_KEY' => $row['ukey'], 'NAME_LOGIN' => $name_login, 'LINK' => $link)); if (++$i >= 30000) { $this->bind($massId); $this->recipient = array(); $i = 0; } ++$cnt; } $this->bind($massId); }