Тема закрыта
Страницы: 1
Есть IMAP аккаунт на GMail, нужно настроить сложные фильтры по телу письма. К примеру такой:
Если в тексте письма встречается одна из фраз: "фраза 1", "фраза 2" ... И не встречается ни одна из фраз "фраза 3", "фраза 4" то переместить сообщение в папку Х.
Что было испробовано:
1. Sieve на Gmail не работает. GMail не реализовал протокол ManageSieve.
2. FiltaQuilla не подходит по причине того, что не умеет обрабатывать тело сообщения ни в Header Regex Match ни в Javascript.
3. Стандартные наборы фильтров не поддерживают группировку
4. Серверные фильтры на Gmail не работают с длинными строками, кроме того они не работают с поиском подстроки в тексте. Только поиск по словам.
Пользуюсь Thunderbird filters import/export enhanced. Он экспортирует условие фильтра в следующем виде:
condition="OR (body,contains,выражение 1) OR (body,contains,выражение 2) OR (body,contains,выражение 3)"
если это условие дописать в таком виде:
condition="AND (OR (body,contains,выражение 1) OR (body,contains,выражение 2) OR (body,contains,выражение 3)) AND (AND (body,doesn't contain,выражение 4) AND (body,doesn't contain,выражение 5))"
и импортировать обратно будет ли оно работать так как я хочу? Можно ли его будет открывать в фильтрах или это приведет к разрушению фильтра/краху программы? Какое ограничение (максимальное количество символов) на длину строки condition?
Да, я знаю, что якобы Thunderbird это все может, нет только соответствующего UI. Да, я знаю каким именно фиксом на какой именно баг вводился синтаксис сложных условий. Да, я читал в интернете сотни фраз в стиле: "да этот синтаксис где-то описан" на самых различных языках. Нет, я не встречал ни разу описания этого синтаксиса или хотя бы одного примера выражения в стиле ((а И б) ИЛИ в) или в любом другом стиле, в котором присутствуют два разных условия. Если вы этот пример встречали, видели описание синтаксиса, либо у вас есть работающее сложное выражение - поделитесь!
Отредактировано Searcher (19-04-2012 10:27:52)
Отсутствует
Мне кажется, что в FiltaQuilla всё-таки можно добраться до тела письма в Javascript-условии. Но проще, конечно, делать так, как вы хотите.
Можно править прямо в msgFilterRules.dat. Этот синтаксис где-то даже описан, просто к нему во всей его полноте нет UI. Что до ограничений, то когда-то, по слухам, было ограничение на 50 условий в фильтре. Сейчас не знаю, можете попробовать.
Отсутствует
Этот синтаксис где-то даже описан
Где??? Буду очень признателен за ссылку. Синтаксис вводился фиксом на этот баг. Но ни какого описания формата не было.
Мне кажется, что в FiltaQuilla всё-таки можно добраться до тела письма в Javascript-условии.
Судя по этому тексту там только заголовки:
The javascript will have as input the variable “message” that is an nsIMsgDBHdr XPCOM object that contains the header database record for the message.
Отредактировано Searcher (12-04-2012 01:19:15)
Отсутствует
Выражение вида
condition="AND (OR (body,contains,выражение 1) OR (body,contains,выражение 2) OR (body,contains,выражение 3)) AND (AND (body,doesn't contain,выражение 4) AND (body,doesn't contain,выражение 5))"
не распознается Thunderbird. Он каждый раз по закрытию обрезает в нем двойные скобки до одинарных. Хотя никаких ошибок и не выдает, фильтр в данном виде не работает.
Если кто-то знает этот тайный формат построения сложных фильтров - буду рад помощи!
Отсутствует
Filtaquilla должна уметь.
Про 50 условий в фильтре я соврал. Ограничение скорее на 50 собственных заголовков (или на вхождение 50 собственных заголовков, точно не знаю) в одном фильтре.
При синтаксис тоже соврал, есть разве что описание алфавита в двух частях.
Про синтаксис слухи противоречивые. Один слух — что порядок выполнения операций никак не регулируется, они просто выполняются слева направо, никаких вам скобок. Но с другой стороны есть вот такой тест. Попытка на скорую руку программно создать виртуальную папку и посмотреть, чем при разной группировке будут отличаться записи условий, к успеху не привела.
На вашем месте попробовал бы последовательно использовать несколько фильтров или промежуточные папки (FiltaQuilla позволяет задействовать автофильтрацию не только в Inbox). Да и вообще, поиск по телу работает плохо, как известно .
Отсутствует
luitzen, честно говоря я так и не понял из описания алфавита какие операторы используются для логических И, ИЛИ в случае сложных выражений и как их расставлять. Также заинтересовали условия:
{nsMsgSearchOp::IsInAB, "is in ab"},
{nsMsgSearchOp::IsntInAB, "isn't in ab"},
{nsMsgSearchOp::Matches, "matches"},
{nsMsgSearchOp::DoesntMatch, "doesn't match"}
Хотелось бы увидеть примеры их использования. Как я понимаю первые два это совпадение с элементами массива, а вторые два - регулярные выражения.
Этот синтаксис где-то даже описан
Весь вопрос этой темы - ГДЕ?
Отсутствует
Тема закрыта
Страницы: 1