Perl для системного администрирования



              

Получение почты - часть 2


use Mail::Header; Smessagefile = "mail";

open(MESSAGE,"Smessagefile") or die "Невозможно открыть $messagefile:$!\n"

$header = new Mail:: Header VMESSAGE;

close(MESSAGE):

Объект $header содержит заголовки сообщения и предлагает несколько удобных способов для получения данных. Например, чтобы вывести

отсортированный список встречающихся имен заголовков (которые в модуле называются «тегами»), можно добавить такую строчку в конец предыдущего примера:

print join("\n",sort $header->tags);

В зависимости от сообщения можно увидеть что-то подобное нижеследующему:

Сс

Date

From

Message-Id

Organization

Received

Reply-To

Sender

Subject

To

Необходимо получить все заголовки Received: из сообщения. Вот как это можно сделать:

received = $header->get("Received");

Часто методы Mail: :Header используются вместе с объектом Mail: : Internet. Если применять Mail: : Internet для возвращения объекта, содержащего и тело и заголовки сообщения, можно сцепить вместе некоторые методы из этих модулей:

©received = $message->head->get("Received"):

Обратите внимание, что get()вызывается в списочном контексте. В скалярном контексте метод вернул бы только первое вхождение этого тега, в случае, если бы мы не задали вторым аргументом порядковый номер тега. Например, get("Received", 2) вернет вторую строку Receivec: из сообщения. Модуль Mail: : Header предоставляет и другие методы для удаления и добавления тегов в заголовки; подробную информацию можно найти в документации.

Разбиение почтового ящика

Перейти на следующий уровень, где мы разобьем на части почтовые ящики, довольно просто. Если почта хранится в формате «классического mbox» или qmail (еще один агент передачи почты, подобный sendma.il), можно использовать модуль Mail : : Folder Кевина Джонсона (Kevin Johnson). Многие из распространенных почтовых агентов (не в Unix), таких как Eudora, тоже хранят почту в классическом формате Unix mbox, так что этот модуль может быть полезным на многих платформах.




Содержание  Назад  Вперед