Назад | Перейти на главную страницу

imapfilter: как захватить часть объекта в переменной

Я получаю несколько писем (на IMAP-сервер) с темой вроде:

[1270503] apple
[1272481] bottle
[172481] wine
[43172481] grapes

Мне нужно, чтобы эти письма переместили в INBOX.CSR.число где число тот, кто стоит в "[]в теме. Почтовый ящик будет создан, если он не существует.

Поскольку я не знаком с языком программирования LUA, мне сложно настроить imapfilter (http://imapfilter.hellug.gr/) сделать это.

update1: мне нужно переставить буквы в папках учетной записи IMAP. Операции с файлами невозможны.

Поскольку никто не придумал идеи, мне пришлось углубиться в язык программирования LUA.

Ответ здесь, если позже кто-то окажется в такой ситуации:

options.timeout = 120
options.subscribe = true

localhost = IMAP {
    server = 'ipaddress',
    username = 'username',
    password = 'password',
}

sms=localhost.CSR:select_all()
if (sms ~= nil)
then
   subjects=localhost.CSR:fetch_fields({ 'subject' }, sms)
    if (subjects ~= nil)
    then
        for messageid, subject in pairs(subjects) 
        do
            local success, csrnumber = regex_search('^Subject: \\[([0-9]+)\\] ', subject)
        if success 
            then 
                localhost:create_mailbox('CSR.'..csrnumber)
                localhost:subscribe_mailbox('CSR.'..csrnumber)
                local tmp = {}
                tmp[messageid]=true
                localhost.CSR:move_messages(localhost['CSR.'..csrnumber], tmp)
            end
        end
    end
end

Вы думали использовать procmail, procmail принимает расширенные регулярные выражения egrep.