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



              

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


Я создаем обьект recipient

my Srecipient = $message->Recipients->Add;

die Win32::OLE->LastError(),"\n" if Win32::OLE->LastError();

 заполняем данными объект recipient

$recipient->{Name} = $to;

$recipient->{Type} = 1; n 1 = "To:", 2 = "Cc:", 3 = "Вес:"

 все адреса должны быть расшифрованы по справочнику

# (в этом случае, скорее всего, по вашей адресной книге)

 Полные адреса расшифровываются сами в себя, так что эта

 строка в большинстве случаев не изменит обьект recipient

$ recipient->Resolve();

die Win32: :OLE->LastError(). "\r> if Win32: :OLE->LastError();

tt заполняем строку Subject: и тело сообщения

$message->{Subject} = Ssubject; $message->{Text} = Sbody;

tt помещаем сообщение в очередь для отправки

 1-й аргумент = сохранить копию сообщения

 2-й аргумент = позволить пользователю изменить сообщение

tt перед отправкой в диалоговом окне

№ 3-й аргумент = родительское окно диалога, если 2-й аргумент True

$message->Send(0, О, О):

die Win32::OLE->LastError(),"\n" if Win32::OLE->LastError();

tt явно уничтожить объект Ssession, вызвав

$session->Logoff undef Ssession,

В отличие от предыдущего примера, программа всего лишь помещает письмо в очередь. Это уже дело почтового клиента (такого как Outlook) или транспортного агента (например Exchange) периодически инициировать отправку почты. Существует CDO/AM 1.1 - метод для объекта Session под названием DeiiverNow(), обращающийся к MAPI с заданием очистить все очереди входящих и исходящих сообщений. К сожалению, в некоторых ситуациях он недоступен или не работает, поэтому его нет и в предыдущем примере.

В упомянутом примере управление MAPI производится «вручную» при помощи вызовов OLE. Если вы хотите использовать MAPI, «не пачкая рук», можно применить модуль Win32: :МАР1, который берет на себя все функции (модуль находится на http://www.generation.net/ -aminer/Perl/ ).

Программы, полагающиеся на AppleScript/Apple Events или MAPI, так же непереносимы, как и вызов программы sendmall. Они берут на себя часть работы, но относительно неэффективны. К этим методам нужно прибегать в последнюю очередь.




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