parser

Написать ответ на текущее сообщение

 

 
   команды управления поиском

Ответ

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