imapfilter: как захватить часть объекта в переменной
Я получаю несколько писем, приходящих (на сервер IMAP) с темой вроде:
[1270503] яблоко [1272481] бутылка [172481] вино [43172481] виноград
Мне нужно, чтобы эти письма были перемещены в INBOX.CSR.число, где число - это тот, который стоит в "[]" в теме. Почтовый ящик должен быть создан, если он не существует.
Поскольку я не знаком с языком программирования LUA, мне сложно настроить imapfilter ( http://imapfilter.hellug.gr/) для этого.
update1: мне нужно переставить буквы в папках учетной записи IMAP. Файловые операции невозможны.
2 ответа
Решение
Поскольку никто не придумал идею, мне пришлось углубиться в язык программирования LUA.
Ответ здесь, если позже кто-то найдет себя в такой ситуации:
options.timeout = 120
options.subscribe = true
localhost = IMAP {
сервер = 'ipaddress',
username = 'username',
пароль = "пароль",
}
смс =localhost.CSR: SELECT_ALL ()
если (смс ~= ноль)
затем
subject =localhost.CSR:fetch_fields({ 'subject' }, смс)
если (предметы ~= ноль)
затем
для сообщения, тема в парах (предметы)
делать
локальный успех, csrnumber = regex_search('^ Тема: \\[([0-9]+)\\] ', тема)
если успех
затем
локальный:create_mailbox('CSR'.. csrnumber)
локальный:subscribe_mailbox('CSR'..csrnumber)
local tmp = {}
TMP [MessageId]= истина
localhost.CSR:move_messages(localhost['CSR.'..csrnumber], tmp)
конец
конец
конец
конец
Думали ли вы использовать procmail, procmail принимает расширенные регулярные выражения egrep.