Различия
Здесь показаны различия между двумя версиями данной страницы.
Следующая версия | Предыдущая версия | ||
расширенная.настройка:почта:контроль [2018/08/23 15:31] a.korobka создано |
расширенная.настройка:почта:контроль [2018/08/23 17:30] (текущий) |
||
---|---|---|---|
Строка 1: | Строка 1: | ||
====== Контроль данных ====== | ====== Контроль данных ====== | ||
- | Ввиду того, что при работе с почтой могут быть представлены не действующие адреса почты или действительные адреса могут быть удалены, в связи с чем перестанут действовать, создан справочник "Черный список адресов" | + | Ввиду того, что при работе с почтой могут быть представлены не действующие адреса почты или действительные адреса могут быть удалены, в связи с чем перестанут действовать, создан справочник "Черный список адресов". |
+ | |||
+ | В связи с тем, что есть необходимость производить действия автоматически, | ||
+ | была изменено структура БД - добавлена таблица и дополнительные управляемые структуры (триггеры, обозначены ниже). | ||
<spoiler|таблица USER$MAIL_BLOCK> | <spoiler|таблица USER$MAIL_BLOCK> | ||
<code sql> | <code sql> | ||
Строка 27: | Строка 31: | ||
====Триггера ==== | ====Триггера ==== | ||
+ | <spoiler|Триггер на таблице рассылок> | ||
+ | <code sql> | ||
+ | create or alter trigger USER$MAIL_LOG_MAILBLOCK for MAIL_LOG | ||
+ | active after update position 99 | ||
+ | as | ||
+ | BEGIN | ||
+ | if (exists(select * from repl$getgrpid g join filials f on f.grpid=g.repl$grpid where f.ismain=1) | ||
+ | and new.errortext = 'N/A') then | ||
+ | begin | ||
+ | -- вставка адреса в блок | ||
+ | insert into user$mail_block(mailpart, typeblock, modifydate) | ||
+ | select m.mailaddress, 1, current_timestamp from mail_log m | ||
+ | left join user$mail_block b on upper(b.mailpart)=upper(m.mailaddress) | ||
+ | where m.mailid = new.mailid and b.mailpart is null; | ||
+ | -- обновление остальных записей | ||
+ | update mail_log m set m.mailstatus = coalesce(m.mailstatus, 10), m.errortext = 'N/A' | ||
+ | where cast(m.createdate as date) >= cast(new.createdate as date) | ||
+ | and upper(m.mailaddress) = upper(new.mailaddress) and m.mailid!=new.mailid and m.errortext!='N/A'; | ||
+ | end | ||
+ | END | ||
+ | </code> | ||
+ | </spoiler> | ||
+ | |||
<spoiler|Триггер на черном списке> | <spoiler|Триггер на черном списке> | ||
<code sql> | <code sql> |