예제 #1
0
echo "Send email messages\n";
$mail = new smtp();
$mail->subject = $eSubject;
// заголовок письма
$mail->message = $eMessage;
// текст письма
$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)) {
    $mail->recipient[] = array('email' => $row['email'], 'extra' => array('first_name' => $row['uname'], 'last_name' => $row['usurname'], 'USER_LOGIN' => $row['login'], 'UNSUBSCRIBE_KEY' => users::GetUnsubscribeKey($row['login'])));
    if (++$i >= 5000) {
        $mail->bind($spamid);
        $mail->recipient = array();
        $i = 0;
    }
    ++$cnt;
}
if ($i) {
    $mail->bind($spamid);
    $mail->recipient = array();
}
echo "OK. Total: {$cnt} users\n";
예제 #2
0
 /**
  * Возвращаем данные подписчика
  * на новый проекты
  * 
  * @global object $DB
  * @param int $uid
  * @return array
  */
 public static function GetPrjRecp($uid)
 {
     global $DB;
     $row = $DB->row("\n          SELECT \n            f.reg_date, \n            f.last_time, \n            f.uname, \n            f.usurname, \n            f.login, \n            f.email, \n            f.mailer, \n            f.mailer_str, \n            usk.key AS unsubscribe_key, \n            f.uid \n         FROM freelancer AS f \n         LEFT JOIN users_subscribe_keys AS usk ON f.uid = usk.uid \n         WHERE \n            f.mailer > 0 \n            AND f.is_banned = '0' \n            AND f.uid = ?i \n         LIMIT 1", $uid);
     if ($row && !$row['unsubscribe_key']) {
         $row['unsubscribe_key'] = users::GetUnsubscribeKey($row['login']);
     }
     return $row;
 }
예제 #3
0
 /**
  * Рассылка о новых проектах лицам, отсутствовавшим на сайте более суток и менее года. Вызывается раз в день из hourly.php.
  *
  * @param array &$uids - массив идентификаторов пользователей, подписанных на новые проекты но которым отправлено это уведомление
  *                     необходимо передать в smail::NewProj
  *
  * @return int количество получивших рассылку
  */
 public function NewProjForMissingMoreThan24h(&$uids)
 {
     $projects = projects::GetNewProjectsWithBudjet($error);
     //сортировка по стоимости
     foreach ($projects as $key => $prj) {
         $prj['sort_cost'] = $prj['cost'];
         if ($prj['currency'] == 0) {
             $prj['sort_cost'] *= 30;
             //в данном случае точный курс не важен, важно отсортировать
         }
         if ($prj['currency'] == 1) {
             $prj['sort_cost'] *= 40;
             //в данном случае точный курс не важен, важно отсортировать
         }
         $projects[$key] = $prj;
     }
     $all_mirrored_specs = professions::GetAllMirroredProfsId();
     $professions = professions::GetProfessionsAndGroup();
     $professionsTree = array();
     foreach ($professions as $k => $i) {
         if ($professionsTree[$i['gid']] === null) {
             $professionsTree[$i['gid']] = array('gid' => $i['gname']);
             if ($i['id'] !== null) {
                 $professionsTree[$i['gid']][$i['id']] = $i['name'];
             } else {
                 $professionsTree[$i['gid']] = $i['gname'];
             }
         } elseif (is_array($professionsTree[$i['gid']])) {
             $professionsTree[$i['gid']][$i['id']] = $i['name'];
         }
     }
     $page = 0;
     $count = 0;
     // total
     $countBs = 0;
     // БС
     $countCar = 0;
     // карусель
     $countPro = 0;
     // ПРО
     $countPayed = 0;
     // платные места
     $countVerify = 0;
     // верификация
     $this->subject = 'Новые проекты и конкурсы на FL.ru';
     $pHost = $GLOBALS['host'];
     ob_start();
     include $_SERVER['DOCUMENT_ROOT'] . '/masssending/tpl.missing_more_than_24h.php';
     $this->message = ob_get_clean();
     $this->recipient = '';
     $massId = $this->masssend();
     $dbStat = new DB('master');
     while ($users = freelancer::GetMissingMoreThan24h($error, ++$page, 100)) {
         $this->recipient = array();
         foreach ($users as $user) {
             if (!$user['unsubscribe_key']) {
                 $user['unsubscribe_key'] = users::GetUnsubscribeKey($user['login']);
             }
             $unsubscribe_link = "{$pHost}/unsubscribe?ukey=" . $user['unsubscribe_key'];
             $advert_template = $this->getAdvertTemplate($user, $n);
             //номер рекламного блока 0 - БС, 1 - карусель, 2 - ПРО, 3 - платные места, 4 - верификация
             switch ($n) {
                 case 0:
                     $countBs++;
                     break;
                 case 1:
                     $countCar++;
                     break;
                 case 2:
                     $countPro++;
                     break;
                 case 3:
                     $countPayed++;
                     break;
                 case 4:
                     $countVerify++;
                     break;
             }
             $pList = $this->getProjectsForUser($projects, $user, $all_mirrored_specs, $professionsTree);
             $length = count($pList);
             if ($length == 0) {
                 continue;
             }
             for ($i = 0; $i < count($pList); ++$i) {
                 for ($j = $i; $j < count($pList); ++$j) {
                     $a = $pList[$i];
                     $b = $pList[$j];
                     if ($b['sort_cost'] > $a['sort_cost']) {
                         $buf = $pList[$i];
                         $pList[$i] = $pList[$j];
                         $pList[$j] = $buf;
                     }
                 }
             }
             $pListHtml = '';
             foreach ($pList as $p) {
                 ob_start();
                 include $_SERVER['DOCUMENT_ROOT'] . '/masssending/tpl.missing_more_than_24h_list_item.php';
                 $pListHtml .= ob_get_clean();
             }
             $str = 'Посмотрите пять самых свежих &mdash; они могут вам понравиться.';
             switch ($length) {
                 case 1:
                     $str = 'Посмотрите самый свежий &mdash; он может вам понравиться.';
                     break;
                 case 2:
                     $str = 'Посмотрите два самых свежих &mdash; они могут вам понравиться.';
                     break;
                 case 3:
                     $str = 'Посмотрите три самых свежих &mdash; они могут вам понравиться.';
                     break;
                 case 4:
                     $str = 'Посмотрите четыре самых свежих &mdash; они могут вам понравиться.';
                     break;
             }
             ob_start();
             include $_SERVER['DOCUMENT_ROOT'] . "/masssending/{$advert_template}";
             $advHtml = ob_get_clean();
             if ($user['subscr_new_prj'] == 't') {
                 $uids[] = $user['uid'];
             }
             $recipient[] = array('email' => $user['uname'] . ' ' . $user['usurname'] . ' [' . $user['login'] . '] ' . ' <' . $user['email'] . '>', 'extra' => array('NAME' => (string) $user['uname'], 'EMAIL' => (string) $user['email'], 'LIST' => (string) $pListHtml, 'ADV' => (string) $advHtml, 'STR' => (string) $str, 'UNSUBSCRIBE_LINK' => (string) $unsubscribe_link));
             ++$count;
         }
         $this->recipient = $recipient;
         $this->bind($massId);
         $recipient = array();
     }
     $query = 'INSERT INTO subscribe_missing_24h_stat (date_subscribe, bs, carusel, pro, payed_places, verify) VALUES (?, ?i, ?i, ?i, ?i, ?i)';
     $dbStat->query($query, date('Y-m-d'), $countBs, $countCar, $countPro, $countPayed, $countVerify);
     return $count;
 }
예제 #4
0
 /**
  * Рассылка пользователям по емейлу, приводим массив в подабающий вид, вспомогательная функция
  * 
  * @param array $a   Переменная массива
  * @return type 
  */
 public function array2send($a)
 {
     $ulink = "{$GLOBALS['host']}/users/{$a['login']}";
     return array('email' => $a['email'], 'extra' => array('USER_NAME' => $a['uname'], 'USER_SURNAME' => $a['usurname'], 'USER_LOGIN' => $a['login'], 'URL_PORTFOLIO' => '<a href="' . "{$ulink}/portfolio/" . '" target="_blank">' . "{$ulink}/portfolio/" . '</a>', 'URL_LK' => '<a href="' . "{$ulink}/" . '" target="_blank">' . "{$ulink}/" . '</a>', 'URL_BILL' => '<a href="' . "{$ulink}/bill/" . '" target="_blank">' . "{$ulink}/bill/" . '</a>', 'UNSUBSCRIBE_KEY' => users::GetUnsubscribeKey($a['login'])));
 }
예제 #5
0
    /**
     * Формирует тело сообщения в формате HTML, в стиле сообщений от FL.ru.
     * 
     * @param   string  $uname    имя пользователя-получателя сообщения.
     * @param   string  $body     исходный текст сообщения.
     * @param   array   $format   можно расширять и использовать как угодно, например, задать так, чтобы не было приветствия.
     * @return  string           html-сообщение.
     */
    public function GetHtml($uname, $body, $format = array('header' => 'default', 'footer' => 'default'), $params = null)
    {
        if (!empty($format) && !is_array($format)) {
            $format = array('header' => $format, 'footer' => $format);
        }
        $body = preg_replace('~(https?:/){[^}]+}/~', '$1/', $body);
        // чистим шаблоны гиперссылок.
        $html_header = '';
        $html_footer = '';
        if ($format['footer'] == 'frl_subscr_projects' || $format['footer'] == 'frl_simple_projects') {
            $format['footer'] = str_replace("frl_", "", $format['footer']);
            $role = 'заказчиком';
        } else {
            $role = 'фрилансерами';
        }
        if ($format['footer'] == 'sub_emp_projects') {
            $subscr = true;
            $format['footer'] = str_replace("sub_", "", $format['footer']);
        } else {
            $subscr = false;
        }
        if ($format['header'] == 'simple_with_add') {
            $html_header = '
                <div style="font-size:10px; color:#7e7e7e;">
                    Чтобы не пропустить ни одного письма от команды <a style="font-size:10px; color:#006ed6" target="_blank" href="' . $GLOBALS['host'] . '">FL.ru</a>, добавьте наш адрес <a style="font-size:10px; color:#006ed6" target="_blank" href="mailto:no_reply@free-lance.ru">no_reply@free-lance.ru</a> в вашу адресную книгу. 
                    <a style="font-size:10px; color:#006ed6" target="_blank" href="https://feedback.fl.ru/topic/532678-instruktsiya-po-dobavleniyu-email-adresa-flru-v-spisok-kontaktov/">Инструкция</a>
                </div>
                <br/>
                <br/>
            ';
            $html_header .= "Здравствуйте" . ($uname ? ", {$uname}." : "!");
        } elseif ($format['header'] == 'default' || $format['header'] == 'simple' || $format['header'] == 'info') {
            $html_header .= "Здравствуйте" . ($uname ? ", {$uname}." : "!");
        } elseif ($format['header'] == 'noname') {
            $html_header .= "Здравствуйте!";
        } elseif ($format['header'] == 'default_new') {
            $html_header .= "Здравствуйте, %USER_NAME%!";
        } elseif ($format['header'] == 'subscribe') {
            $html_header .= "Здравствуйте" . ($uname ? ", {$uname}." : "!") . " ";
            $html_header .= "В " . ($params['type'] == 1 ? 'блоге' : 'топике ' . ($params['topic_title'] ? ' &laquo;' . $params['topic_title'] . '&raquo;' : '') . ' сообщества') . ($params['title'] ? ' &laquo;' . $params['title'] . '&raquo;' : '') . ", ";
            $html_header .= "на котор" . ($params['type'] == 1 ? 'ый' : 'ое') . " вы подписаны, появился новый комментарий.";
        } elseif ($format['header'] == 'subscribe_edit_comment') {
            $html_header .= "Здравствуйте" . ($uname ? ", {$uname}." : "!") . " <br/><br/>";
            $html_header .= "В " . ($params['type'] == 1 ? 'блоге' : 'сообществе') . ($params['title'] ? ' &laquo;' . $params['title'] . '&raquo;' : '') . ", ";
            $html_header .= "на котор" . ($params['type'] == 1 ? 'ый' : 'ое') . " вы подписаны, отредактирован комментарий.";
        } elseif ($format['header'] == 'subscribe_edit_post') {
            $html_header .= "Здравствуйте" . ($uname ? ", {$uname}." : "!") . " <br/><br/>";
            $html_header .= ($params['type'] == 1 ? 'В  блоге' : 'Топик ' . ($params['topic_name'] ? ' &laquo;' . $params['topic_name'] . '&raquo;' : '') . ' сообщества') . ($params['title'] ? ' &laquo;' . $params['title'] . '&raquo;' : '');
            $html_header .= ($params["to_subscriber"] ? ", на который вы подписаны," : "") . " отредактирован.";
        } elseif ($format['header'] == 'subscribe_delete_comment') {
            $html_header .= "Здравствуйте" . ($uname ? ", {$uname}." : "!") . " <br/><br/>";
            $html_header .= "В " . ($params['type'] == 1 ? 'блоге' : 'сообществе') . ($params['title'] ? ' &laquo;' . $params['title'] . '&raquo;' : '') . ", ";
            $html_header .= "на котор" . ($params['type'] == 1 ? 'ый' : 'ое') . " вы подписаны, удален комментарий.";
        } elseif ($format['header'] == 'subscribe_delete_post') {
            $html_header .= "Здравствуйте" . ($uname ? ", {$uname}." : "!") . " <br/><br/>";
            $html_header .= ($params['type'] == 1 ? 'Блог' : ($params['is_comment'] ? 'Комментарий в топике  ' : 'Топик ') . ($params['topic_name'] ? ' &laquo;' . $params['topic_name'] . '&raquo;' : '') . ' сообщества ') . ($params['title'] ? ' &laquo;' . $params['title'] . '&raquo;' : '') . ", ";
            if (!$params['to_topicstarter']) {
                $html_header .= "на который вы подписаны, удален.";
            } else {
                $html_header .= "удален " . ($params["is_author"] ? "автором темы" : "модератором сообщества") . ".";
            }
        }
        if (!empty($params['login'])) {
            $lnk_setup_mail = "<a href='{$GLOBALS['host']}/unsubscribe?ukey=" . users::GetUnsubscribeKey($params['login']) . "'>на этой странице</a>";
        } else {
            if (empty($params['target_footer'])) {
                $lnk_setup_mail = "на странице &laquo;Уведомления/Рассылка&raquo;";
            } else {
                $lnk_setup_mail = "<a href='{$GLOBALS['host']}/unsubscribe?ukey=%UNSUBSCRIBE_KEY%'>на этой странице</a>";
            }
        }
        if (!empty($params['utm_campaign'])) {
            $lnk_team = "<a href='{$GLOBALS['host']}/?utm_source=newsletter4&utm_medium=rassilka&utm_campaign={$params['utm_campaign']}{$this->_addUrlParams('b', '&')}'>FL.ru</a>";
        } else {
            $lnk_team = "<a href='{$GLOBALS['host']}/{$this->_addUrlParams('b')}'>FL.ru</a>";
        }
        if ($format['footer'] == 'default') {
            //$html_footer .= "Вы можете отключить уведомления {$lnk_setup_mail}.";
            //$html_footer .= "<br><br>";
            //$html_footer .= "Команда FL.ru благодарит вас за участие в жизни нашего портала.";
            $html_footer .= "<br><br>";
            $html_footer .= "Приятной работы,";
            $html_footer .= "<br>";
            $html_footer .= "команда {$lnk_team}";
        } else {
            if ($format['footer'] == 'feedback_default') {
                $html_footer .= "По всем возникающим вопросам вы можете обращаться в нашу <a href='https://feedback.fl.ru/' taraget='_blank'>службу поддержки</a>. ";
                //$html_footer .= "<br/>Вы можете отключить уведомления {$lnk_setup_mail}.";
                //$html_footer .= "<br><br>";
                //$html_footer .= "Команда FL.ru благодарит вас за участие в жизни нашего портала.";
                $html_footer .= "<br><br>";
                $html_footer .= "Приятной работы,";
                $html_footer .= "<br>";
                $html_footer .= "команда {$lnk_team}";
            } else {
                if ($format['footer'] == 'simple') {
                    $html_footer .= "Приятной работы,";
                    $html_footer .= "<br>";
                    $html_footer .= "команда <a href='{$GLOBALS['host']}/{$this->_addUrlParams('b')}'>FL.ru</a>";
                } else {
                    if ($format['footer'] == 'info_robot') {
                        $html_footer .= "Данное письмо отправлено почтовым роботом сервера FL.ru и не требует ответа.";
                        $html_footer .= "<br>";
                        $html_footer .= "По всем возникающим вопросам вы можете обращаться в нашу <a href='https://feedback.fl.ru/{$this->_addUrlParams('b', '?')}'>службу поддержки</a>.";
                        $html_footer .= "<br><br>";
                        $html_footer .= "Приятной работы,";
                        $html_footer .= "<br>";
                        $html_footer .= "команда <a href='{$GLOBALS['host']}/{$this->_addUrlParams('b')}'>FL.ru</a>";
                    } else {
                        if ($format['footer'] == 'norisk_robot') {
                            $html_footer .= "Данное письмо отправлено почтовым роботом FL.ru и не требует ответа.";
                            $html_footer .= "<br>";
                            $html_footer .= "По всем возникающим вопросам вы можете обращаться в нашу <a href='https://feedback.fl.ru/{$this->_addUrlParams('b', '?')}'>службу поддержки</a>.";
                            $html_footer .= "<br><br>";
                            $html_footer .= "Приятной работы,";
                            $html_footer .= "<br>";
                            $html_footer .= "команда <a href='{$GLOBALS['host']}/{$this->_addUrlParams('b')}'>FL.ru</a>";
                        } else {
                            if ($format['footer'] == 'info') {
                                $html_footer .= "Команда FL.ru";
                                $html_footer .= "<br>";
                                $html_footer .= "<a href='mailto:info@fl.ru'>info@fl.ru</a>";
                                $html_footer .= "<br>";
                                $html_footer .= "<a href='{$GLOBALS['host']}/{$this->_addUrlParams('b')}'>{$GLOBALS['host']}</a>";
                            } else {
                                if ($format['footer'] == 'subscribe') {
                                    $html_footer .= "Чтобы отключить подобные уведомления, зайдите в " . ($params['type'] == 1 ? 'блог' : 'сообщество') . " и нажмите кнопку \"Отписаться\".";
                                    //$html_footer .= "<br><br>";
                                    //$html_footer .= "Команда FL.ru благодарит вас за участие в жизни нашего портала.";
                                    $html_footer .= "<br><br>";
                                    $html_footer .= "Приятной работы,";
                                    $html_footer .= "<br>";
                                    $html_footer .= "команда <a href='{$GLOBALS['host']}/{$this->_addUrlParams('b')}'>FL.ru</a>";
                                } else {
                                    if ($format['footer'] == 'simple_norisk') {
                                        $html_footer .= "Если у вас есть какие-то вопросы по «Безопасной Сделке», обращайтесь к нашему менеджеру <a href='mailto:norisk@fl.ru'>norisk@fl.ru</a>";
                                        $html_footer .= "<br><br>";
                                        $html_footer .= "Команда FL.ru благодарит вас за участие в жизни нашего портала.";
                                        $html_footer .= "<br><br>";
                                        $html_footer .= "Приятной работы,";
                                        $html_footer .= "<br>";
                                        $html_footer .= "команда <a href='{$GLOBALS['host']}/{$this->_addUrlParams('b')}'>FL.ru</a>";
                                    } else {
                                        if ($format['footer'] == 'simple_projects') {
                                            $html_footer .= "В проекте вы выбрали способ оплаты - <strong>Прямая оплата исполнителю.</strong><br>";
                                            $html_footer .= "В этом случае вы несете все риски, связанные с несвоевременным и/или некачественным выполнением работы. И не имеете возможности обратиться в Арбитраж.";
                                            $html_footer .= "<br><br>";
                                            $html_footer .= "Предлагаем вам <strong><a href='{$GLOBALS['host']}/public/?step=1&public={$params['project']['id']}&choose_bs=1'>изменить способ оплаты на Безопасную сделку</a>.</strong><br>";
                                            $html_footer .= "<a href='{$GLOBALS['host']}/promo/bezopasnaya-sdelka/'>Промо-страница Безопасной сделки</a>.";
                                            $html_footer .= "<br><br>";
                                            $html_footer .= "Приятной работы,";
                                            $html_footer .= "<br>";
                                            $html_footer .= "команда <a href='{$GLOBALS['host']}/{$this->_addUrlParams('b')}'>FL.ru</a>";
                                        } else {
                                            if ($format['footer'] == 'subscr_projects') {
                                                $html_footer .= "Чтобы минимизировать риски, возникающие в ходе сотрудничества с {$role}, рекомендуем воспользоваться «<a href='{$GLOBALS['host']}/promo/sbr/{$this->_addUrlParams('b')}'>Безопасной Сделкой</a>».";
                                                $html_footer .= "<br><br>";
                                                //$html_footer .= "Вы можете отключить уведомления {$lnk_setup_mail}.";
                                                //$html_footer .= "<br><br>";
                                                $html_footer .= "Приятной работы,";
                                                $html_footer .= "<br>";
                                                $html_footer .= "команда <a href='{$GLOBALS['host']}/{$this->_addUrlParams('b')}'>FL.ru</a>";
                                            } else {
                                                if ($format['footer'] == 'emp_projects') {
                                                    if ($subscr) {
                                                        //$html_footer .= "<br><br>";
                                                        //$html_footer .= "Вы можете отключить уведомления {$lnk_setup_mail}.";
                                                    }
                                                    $html_footer .= "<br><br>";
                                                    $html_footer .= "Приятной работы,";
                                                    $html_footer .= "<br>";
                                                    $html_footer .= "команда <a href='{$GLOBALS['host']}/{$this->_addUrlParams('b')}'>FL.ru</a>";
                                                } else {
                                                    if ($format['footer'] == 'simple_adv') {
                                                        $html_footer .= "Владельцы «Аккаунта PRO» - это наиболее активная и профессиональная аудитория сайта. \n                            Хотим напомнить, что на каждого обладателя профессионального аккаунта приходится по 2 опубликованных проекта, \n                            а средний бюджет проекта для PRO составляет более 10 300 рублей. Продлить действие «Аккаунта PRO», \n                            а также ознакомиться с другими возможностями продвижения своего аккаунта на FL.ru можно <a href='{$GLOBALS['host']}/payed/{$this->_addUrlParams('b')}'>здесь</a>.";
                                                        $html_footer .= "<br/><br/>";
                                                        $html_footer .= "Приятной работы,";
                                                        $html_footer .= "<br/><br/>";
                                                        $html_footer .= "команда <a href='{$GLOBALS['host']}/{$this->_addUrlParams('b')}'>FL.ru</a>";
                                                    }
                                                }
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
        ob_start(null, 0, true);
        ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ru" lang="ru">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251" /> 
</head>
<style type="text/css">
a { color: #003399; text-decoration:underline; font-size:10pt; font-family:Tahoma; }
body { margin:10px; background:#ffffff; color:#000000; font-size:10pt; font-family:Tahoma; }
td { font-size:10pt; font-family:Tahoma; }
</style>
<body>
<table cellspacing="0" border="0" cellpadding="0" width="100%">
<tbody>
<tr>
<td>
<?php 
        echo $html_header ? "{$html_header}<br><br>" : "";
        echo $body;
        ?>
<br><br><?php 
        echo $html_footer;
        ?>
</td>
</tr>
</tbody>
</table>
</body>
</html>
<?php 
        $ret = ob_get_clean();
        return $ret;
    }