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



              

Отправка почты - часть 6


use Mail::Mailer;

$f rom="me\@example. coin"; $to="you\@example.com";

$subject="Hi there"; $body="message body\n";

$type="srnto"; $server="mail.example,com";

my Smaller = Mail::Mailer->new($type, Server -> $server) or die

"Невозможно создать новый объект mailer:$'\n".

Переменная $type позволяет выбрать один из следующих типов поведения:

smtp

Посылает почту, обращаясь к модулю Net: :SMTP (часть пакета lib-net),

доступному и для большинства не-Unix версий Perl. Если используется MailTools версии 1.13 или выше, можно задать имя SMTP-сервера, применяя приведенную выше символику =>. В противном случае, придется устанавливать имя сервера во время процедуры установки libnet.

mail

Отправка почты при помощи почтового агента mail (или любого другого, который задан вторым необязательным аргументом). Это напоминает недавнее использование AppleScript и MAPI.

sendmail

Отправка почты с помощью программы sendmail, как и в первом случае из данного раздела.

Кроме того, можно установить переменную окружения PtRL_MAILERS, чтобы изменить путь, установленный по умолчанию для поиска программ (например,

sendmail) в системе.

Вызов метода ореп() для нашего объекта Mail:: Mailer заставляет последний выполнять роль дескриптора для исходящего сообщения. В этом вызове передаются заголовки сообщения ссылке на анонимный хэш:

$mailer->open({From => $from, То => $to.

Subject => Ssubject}) or die "Невозможно заполнить объект mailer

Тело сообщения выводится в этот псевдодескриптор, который потом закрывается для отправки сообщения:

print Smailer $body: $mailer->close;

Этого вполне достаточно, чтобы отправка почты из Perl не зависела от системы.

В зависимости от того, какой тип поведения $type был выбран при работе с модулем, могут оказаться скрытыми (а могут и не оказаться) более сложные вопросы, относящиеся к МТА, о которых уже говорилось. В предыдущем примере использовалось поведение smtp, а это означает, что программа должна быть достаточно умна, чтобы обрабатывать такие сбои как недоступность сервера. Приведенный пример не настолько «сообразителен». Обязательно позаботьтесь о таких моментах, когда будете писать программы.




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