Модераторы: ginnie
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Помогите в доработке скрипта 
:(
    Опции темы
ccoll
Дата 11.3.2010, 07:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 11.3.2010

Репутация: нет
Всего: нет



Прошу сразу не пинать, так как в PERL......

Есть скрипт, он ищет определенные строки в файлах, после того как он нашел определенную строку с адресом, адрес вырезается и создается папка с названием этого адреса и после этого файл копируется в созданную папку и удаляется со старого места.

Как доработать эту часть скрипта, что надо:

- в файле бывает так, что почтовый адрес не один а два и более надо выбирать, а следовательно надо создавать не одну папку и во все кидать этот файл, вот часть скрипта:

 if ($content[$q]=~m|^To:.*\s<(\S+\@\S+)>|i or $content[$q]=~m|^To:.*\s(\S+\@\S+)|i)
                {
                        if (is_local(@config,$1))
                        {
                                $b++;
                                print "$i. Storing: inbox -> $1 ";
                                $ret = backup_mail($files[$i],$1,"in");

                                print("-> Done.");
                        }
                }
        }
        if($b==0 or $b>2)

        {
                print "$i. Storing: inbox -> Unsorted ";
                backup_mail($files[$i],"Unsorted","in");
                print("-> Done.");
        }
   unlink($files[$i]) and print " *******$files[$i] deleted.\n"; # удаляем файл-источник


Ссорри если не понятно написал......

Вот сам скрипт:
http://www.bsdhome.org/index.php/Mailbackup

Примерно так выглядит файл по тому полю по которому ищет адрес:
To: =?2222222222222222222222222222?= <[email protected]>, =?6776876868687687686?= <[email protected]>, <[email protected]>




Это сообщение отредактировал(а) ccoll - 11.3.2010, 08:06
PM MAIL   Вверх
dva300
Дата 11.3.2010, 11:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 220
Регистрация: 17.2.2010
Где: Москва

Репутация: 2
Всего: 1



Цитата(ccoll @ 11.3.2010,  07:44)

Примерно так выглядит файл по тому полю по которому ищет адрес:
To: =?2222222222222222222222222222?= <[email protected]>, =?6776876868687687686?= <[email protected]>, <[email protected]>

приветствую.
попробуй код ниже. изменения мимнимальны.
у меня нет примера строки но если приведенный тобой корректен то логика следующая.
1) Поле ТО может содержать несколько получателей адресса которых разделенный запятой (,)
2) Находим строку с ТО
3) Разбиваем на части по запятой
4) каждую часть обрабатываем как и раньше.

Как проверишь не забудуть сказать что получилось.

Код

 if ($content[$q]=~m|^To:.*\s<(\S+\@\S+)>|i or $content[$q]=~m|^To:.*\s(\S+\@\S+)|i)
                {
                my @list = split(/,/,$content[$q]);
                foreach my $email_i (@list)
                    {    
                    if ($email_i =~m|.*\s<(\S+\@\S+)>|i or $content[$q]=~m|.*\s(\S+\@\S+)|i)
                        {

                            if (is_local(@config,$1))
                            {
                                $b++;
                                print "$i. Storing: inbox -> $1 ";
                                $ret = backup_mail($files[$i],$1,"in");

                                print("-> Done.");
                            }
                        }
                    }    

                }
        }
        if($b==0 or $b>2)

        {
                print "$i. Storing: inbox -> Unsorted ";
                backup_mail($files[$i],"Unsorted","in");
                print("-> Done.");
        }
   unlink($files[$i]) and print " *******$files[$i] deleted.\n"; # удаляем файл-источник

--------------------
Участник движения Культура Вождения
PM   Вверх
ccoll
Дата 11.3.2010, 12:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 11.3.2010

Репутация: нет
Всего: нет



Спасибо огромное, работает. Ещё забыл написать, текст так же может размещаться вот так:

To: =?2222222222222222222222222222?= <[email protected]>, 
                      <[email protected]>, 
                      <[email protected]>

Так не работает.
PM MAIL   Вверх
dva300
Дата 11.3.2010, 13:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 220
Регистрация: 17.2.2010
Где: Москва

Репутация: 2
Всего: 1



Цитата(ccoll @ 11.3.2010,  12:46)
Спасибо огромное, работает. Ещё забыл написать, текст так же может размещаться вот так:

To: =?2222222222222222222222222222?= <[email protected]>, 
                      <[email protected]>, 
                      <[email protected]>

Так не работает.

 smile всегда готов 

хм.. странно... выкладывай кусок файла который ты анализируешь.
думаю что ты что-то упустил. возможно там есть еще что-то, например, СС или BCC

Если адреса вставляются в одну строку то идут через запятую. а вот с новой строки значит должно быть еще что-то


P.S. пиши с личку, дам скайп. думаю что сие врядли кому тут интересно.
--------------------
Участник движения Культура Вождения
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Perl: Регулярные выражения | Следующая тема »


 




[ Время генерации скрипта: 0.0504 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.