Полезная информация

Юристы зарабатывают огромные деньги и славу, оперируя хорошим знанием законов. Правила форума — простой путь к успешному общению.
  • Форумы
  •  » Thunderbird
  •  » Язык фильтров для создания условий по группам объединенным AND/OR

№111-04-2012 12:15:31

Searcher
Участник
 
Группа: Members
Зарегистрирован: 16-03-2012
Сообщений: 5
UA: Chrome 18.0

Язык фильтров для создания условий по группам объединенным AND/OR

Есть 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)

Отсутствует

 

№211-04-2012 23:21:56

luitzen
Участник
 
Группа: Members
Зарегистрирован: 19-07-2008
Сообщений: 791
UA: Firefox 11.0

Re: Язык фильтров для создания условий по группам объединенным AND/OR

Мне кажется, что в FiltaQuilla всё-таки можно добраться до тела письма в Javascript-условии. Но проще, конечно, делать так, как вы хотите.

Можно править прямо в msgFilterRules.dat. Этот синтаксис где-то даже описан, просто к нему во всей его полноте нет UI. Что до ограничений, то когда-то, по слухам, было ограничение на 50 условий в фильтре. Сейчас не знаю, можете попробовать.

Отсутствует

 

№312-04-2012 00:53:09

Searcher
Участник
 
Группа: Members
Зарегистрирован: 16-03-2012
Сообщений: 5
UA: Chrome 18.0

Re: Язык фильтров для создания условий по группам объединенным AND/OR

Этот синтаксис где-то даже описан

Где??? Буду очень признателен за ссылку. Синтаксис вводился фиксом на этот баг. Но ни какого описания формата не было.

Мне кажется, что в 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)

Отсутствует

 

№412-04-2012 17:59:11

Searcher
Участник
 
Группа: Members
Зарегистрирован: 16-03-2012
Сообщений: 5
UA: Chrome 18.0

Re: Язык фильтров для создания условий по группам объединенным AND/OR

Выражение вида

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. Он каждый раз по закрытию обрезает в нем двойные скобки до одинарных. Хотя никаких ошибок и не выдает, фильтр в данном виде не работает.
Если кто-то знает этот тайный формат построения сложных фильтров - буду рад помощи!

Отсутствует

 

№516-04-2012 15:36:00

luitzen
Участник
 
Группа: Members
Зарегистрирован: 19-07-2008
Сообщений: 791
UA: Firefox 11.0

Re: Язык фильтров для создания условий по группам объединенным AND/OR

Filtaquilla должна уметь.

Про 50 условий в фильтре я соврал. Ограничение скорее на 50 собственных заголовков (или на вхождение 50 собственных заголовков, точно не знаю) в одном фильтре.

При синтаксис тоже соврал, есть разве что описание алфавита в двух частях.

Про синтаксис слухи противоречивые. Один слух — что порядок выполнения операций никак не регулируется, они просто выполняются слева направо, никаких вам скобок. Но с другой стороны есть вот такой тест. Попытка на скорую руку программно создать виртуальную папку и посмотреть, чем при разной группировке будут отличаться записи условий, к успеху не привела.

На вашем месте попробовал бы последовательно использовать несколько фильтров или промежуточные папки (FiltaQuilla позволяет задействовать автофильтрацию не только в Inbox). Да и вообще, поиск по телу работает плохо, как известно :).

Отсутствует

 

№619-04-2012 10:31:05

Searcher
Участник
 
Группа: Members
Зарегистрирован: 16-03-2012
Сообщений: 5
UA: Chrome 18.0

Re: Язык фильтров для создания условий по группам объединенным AND/OR

luitzen, честно говоря я так и не понял из описания алфавита какие операторы используются для логических И, ИЛИ в случае сложных выражений и как их расставлять. Также заинтересовали условия:

{nsMsgSearchOp::IsInAB, "is in ab"},
{nsMsgSearchOp::IsntInAB, "isn't in ab"},
{nsMsgSearchOp::Matches, "matches"},
{nsMsgSearchOp::DoesntMatch, "doesn't match"}

Хотелось бы увидеть примеры их использования. Как я понимаю первые два это совпадение с элементами массива, а вторые два - регулярные выражения.

Этот синтаксис где-то даже описан

:lol: Весь вопрос этой темы - ГДЕ?

Отсутствует

 
  • Форумы
  •  » Thunderbird
  •  » Язык фильтров для создания условий по группам объединенным AND/OR

Board footer

Powered by PunBB
Modified by Mozilla Russia
Copyright © 2004–2020 Mozilla Russia GitHub mark
Язык отображения форума: [Русский] [English]