Работа со строковыми значениями |
Пожалуйста, обратите внимание, что во всех правилах и параметрах подключаемых модулей, использующих значение некоторого заголовка или части письма, следует учитывать кодировку, в которой встречается искомый текст. Значения не на латинице, заданные «напрямую», будут совпадать только в том случае, если кодировка искомого текста совпадет с кодировкой, в которой создан конфигурационный файл. Если требуется использовать значения в других кодировках, следует вставить в качестве значения строку, преобразованную в нужную кодировку и закодированную с использованием транспортного кода, например base64. Итоговое строковое значение должно быть приведено к выражению вида: =?<source_enc>?<B|Q>?<coded_text>?= где: •<source_enc> – исходная кодировка текста (например, UTF-8, CP1251 и т.п.); •<B|Q> – обозначение использованной транспортной кодировки (B - base64, Q - quoted-printable); •<coded_text> – закодированное строковое значение. Обратите внимание, что если полученное значение должно трактоваться как регулярное выражение, то символы, которые играют в регулярных выражениях роль специальных (например, сам символ ?), должны быть дополнительно экранированы двойным обратным слэшем '\\'. Пример: Пусть требуется искать письма, содержащие в заголовке слово «тест», написанное на русском языке, с использованием кириллицы в кодировке CP1251. В этой кодировке, если ее перевести в транспортную кодировку base64, строка будет иметь вид 8uXx8go=. Для получения строк в нужной кодировке воспользуйтесь, например, утилитами iconv и base64. Нижеприведенный пример преобразует строку символов «тест», введенную в кодировке UTF-8, в строку символов в кодировке CP1251, а затем получается ее представление с использованием base64: echo "тест" | iconv -f utf-8 -t cp1251 | base64 Примеры использования в подключаемых модулях: 1. Чтобы модуль Dr.Web Modifier мог выбрать заголовок, состоящий из слова «тест» в кодировке CP1251, необходимо написать следующее условие выборки в правиле модификации: select mime.headers Subject "=\\?cp1251\\?B\\?8uXx8go=\\?=" 2. Чтобы модуль Vaderetro прибавлял к заголовкам писем слово «тест» в кодировке CP1251, необходимо написать: SubjectPrefix = "=?cp1251?B?8uXx8go=?=" 3. Чтобы модуль Dr.Web HeadersFilter отклонял письма, заголовок которых содержит слово «тест» в кодировке CP1251, необходимо написать: RejectCondition = Subject = "=\\?cp1251\\?B\\?8uXx8go=\\?=" |