Личный кабинет    
Назад К началу Вперед Карта сайта Телефонные коды стран и городов Мира Анализатор тарифов Служб IP-Телефонии и Рейтинг

Разделы
Введение
Литература
Операторы
Оборудование
Анализатор
Сотрудничество
Печать карт
Новости
Опросник
Коды
Справка
Работа
Каталог
Хостинг
Личный кабинет

Реклама

Perl для IP-Телефонии (28 – Протокол IMAP, часть 3)

предыдущая часть ««»» следующая часть

Получение сводных данных о содержимом почтового ящика IMAP 

Программа pop_stats.pl, представленная в листинге ниже, позволяет получить сводные данные о содержимом почтового ящика POP3. Теперь эта программа будет доработана в целях получения сводных данных о содержимом почтового ящика IMAP. В качестве дополнительного средства новый сценарий imap_stats.pl показывает, было ли считано сообщение. Этот сценарий вызывается, как и pop_stats .pl, но с дополнительным необязательным параметром командной строки, который указы­вает имя рассматриваемого почтового ящика.

% imap_stats.pl Istein@localhost gd_bug_reports
lstein@localhost password:
gd has 6 messages (2 new)
 Honza Pazdziora    Re: ANNOUNCE: GD::Latin2    patch    (fwd)    read
 Gurusamy Sarathy    Re: patches for GD by Gurusamy    Sarathy read
 Honza Pazdziora    Re: ANNOUNCE: GD::Latin2    patch    (fwd)    read
 Erik Bertelsen    GD-1.18, 2 minor typos    read
 Erik Bertelsen    GD fails on some GIF’s    unread
 Honza Pazdziora    GDlib version 1.3    unread

Получение сводки о содержимом почтового ящика IMAP

0:    #!/usr/local/bin/perl -w
1:    # Файл: imap_stats.pl
2:    use strict;
3:    use Net::IMAP::Simple;
4:    use Mail::Header;
5:    use PromptUtil;
6:    my ($user,$host) = split(/@/,shift,2);
7:    my $mailbox    = shift || if 'INBOX';
8:    ($user && $host) or die "Usage: imap_stats.pl usernameX©mailbox.host [mailbox]n";
9:    my $passwd = get_passwd ($user, $host) || exit 0;
10:    $/ = "1512";
11:    my $imap = Net::IMAP::Simple->new($host,Timeout=>30) or die "Can11 connect to $host: $!n";
12:    defined($imap->login($user=>$passwd)) or die "Can’t log inn";
13:    defined(my $messages = $imap->select($mailbox) or die "invalid mailboxn";
14:    my $last = $imap->last;
15:    print "$mailbox has $messages messages";
16    for my $msgnum (1. . $messages) {
17:    my $header = $imap->top ($msgnum) ;
18:    my $parsedhead = Mail::Header->new($header);
19:    chomp (my $subject = $parsedhead->get('Subject'));
20:    chomp (my $from = $parsedhead->get('From'));
21:    $from = clean_from ($from) ;
22:    my $read = $imap->seen($msgnum) ? ' read ' : ' unread ';
23:    printf "%4d %-25s %-4'0s %-10sn",$msgnum,$from,$subject, $read;
24:    }
25:    $imap->quit;
2 6:    sub clean_from {
27:    local $_ = shift;
28:    /A" ( [A"]+) " /    &&    return    $1;
29:    /A([A]+) /    &&    return    $1;
30:    /AS+ (([A)]+))/    &&    return    $1;
31:    return $_;
32:    }

Проведем анализ программы.

 Строки 1-5. Загрузка модулей. Загружаются модули Net::IMAP::Simple, Mail::Header, а также модуль PromptUtil, используемый в предыдущих примерах.

 Строки 6-9. Обработка параметров командной строки. Имя пользователя и имя хоста почтового ящика извлекаются путем сопоставления с образцом из первого параметра командной строки, а имя почтового ящика — из второго параметра. Если имя почтового ящика не указано, по умолчанию ука­зывается имя inbox, которое представляет собой имя почтового ящика, применяемое по умолчанию во многих системах UNIX. Затем выдается запрос пользователю ввести пароль.

Строки 10-14. Подключение к удаленному хосту. Вызывается метод Net::IMAP::simple ->new() для подключения к указанному хосту, а затем выполняется вызов метода login () для проверки подлинности пользователя. Если эти этапы выполнены успешно, вызывается метод select объекта, позволяющий выбрать указанный почтовый ящик. Этот вызов воз­вращает общее число сообщений в почтовом ящике; если почтовый ящик пуст, возвращает значение 0, а если он не существует — значение undef. Выбирается номер последнего счи­танного сообщения путем вызова метода last ().



2014-02-14 18:14:32

предыдущая часть ««»» следующая часть


ДОКУМЕНТАЦИЯ VoIP


НОВОСТИ СВЯЗИ


РЕКОМЕНДУЕМ

 
[ стандарты | обзор | оборудование | анализатор | коды | новости | карта | партнерам | Мы ВКонтаке ]
Запрещается копировать материалы сайта без уведомления авторов.
С вопросами и предложениями обращайтесь со страницы контактов
Copyright c 1999-2024 IPTop.Net
 
IP-Телефония, Интернет Телефония, Компьютерная телефония