Новости | FAQ | Авторы | Документация | В действии | Библиотека |
Инструменты | Полезные ссылки | Хостинги | Скачать | Примеры | Форум |
Dmitri 07.07.2004 13:34 / 07.07.2004 13:35
Вот, собственно, код подгатавливающий список адресов:#Рассылка либо по пользователям, либи по группам #Таблица для формирования условий WHERE при SQL запросах $wheres[^table::create{where}] #По пользователям ^if($form:by eq "user"){ #Пробегаемся по списку подльзователей и составляем список, кому рассылать (те, кто выбраны на предыдущей странице) $us[^table::sql{SELECT client_id FROM client}] ^us.menu{ ^if(${form:[usr_${us.client_id}]}){ ^wheres.append{${us.client_id}} } } #Список, собственно адресов. $emails[^table::sql{ SELECT DISTINCT name, email FROM client WHERE ^wheres.menu{client_id = $wheres.client_id}[ OR ] }] }{ #Берем список групп $gs[^table::sql{SELECT client_grp_id,title FROM client_grp WHERE public ORDER BY sort_num}] ^gs.menu{ ^if(${form:[grp_${gs.client_grp_id}]}){ ^wheres.append{${gs.client_grp_id}} } } #Теперь берем собственно адреса $emails[^table::sql{ SELECT DISTINCT client.name AS name, client.email AS email FROM client_to_grp LEFT JOIN client ON client.client_id = client_to_grp.client_id WHERE ^wheres.menu{client_grp_id = $wheres.where}[ OR ] }] } #Формируем само письмо $cfg[ $.from[site.ru <maillist@site.ru>] $.to[subscriber <test@site.ru>] $.subject[site.RU Maillist: $form:title] $.text[maillist text] ] ^emails.menu{ $cfg.to[$emails.name <$emails.email>] ^mail:send[$cfg] }[] Сообщения разосланны.Проблема еще заключается в том, что на нескольких своих (тестовых) почтовых адресах все работает. Не работает на полной базе подписчиков, а тестировать практически нет возможности, т.к. кому-то рассылается, а кому-то нет. Таким образом тем, кто первый в списке может в результате тестирования прийти несколько писем, а некоторым вообще ниодного.