| Новости | 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]
}[]
Сообщения разосланны.Проблема еще заключается в том, что на нескольких своих (тестовых) почтовых адресах все работает. Не работает на полной базе подписчиков, а тестировать практически нет возможности, т.к. кому-то рассылается, а кому-то нет. Таким образом тем, кто первый в списке может в результате тестирования прийти несколько писем, а некоторым вообще ниодного.