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.

Другие вопросы по тегам