$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";
예제 #3
0
 /**
  * Возвращает 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;
 }
예제 #4
0
 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);
     }
 }
예제 #5
0
 /**
  * Уведомление Заказчикам о том, что надо зарезервировать деньги через сутки   и трое суток после создания сделки.
  */
 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);
 }