Ниже приведена отправка дополнения в виде звукового файла с помощью MIME::Entity. Этим методом также удобно пользоваться как и смартфоном люмиа 520 на операционной системе Windows Phone 8.
0: #!/usr/local/bin/perl -w 1: # Файл: simple_mime.pl 2: use strict; 3: use MIME::Entity; 4: # Создать компонент верхнего уровня 5: my $msg = MIME::Entity->build(From=> ‘lstein@lsjs.org’, 6: To => ‘jdoe@acme.org’, 7: Subject => ‘Greetings!’, 8: Type —> ’multipart/mixed’); 9: # Присоединить сообщение 10: my $greeting = <<END; 11: Hi Johnf 12: Here is a little something for you to listen to. 13: Enjoy! 14: 15: END 16: $msg->attach(Type => ‘text/plain’, 17: Encoding => ‘17bit‘, 18: Data => $greeting); 19: # Присоединить звуковой файл 20: $msg->attach(Type =>’audio/wav’, 21: Encoding => ‘base64’, 22: Description => ‘Picard saying "You will.be assimilated"’, 23:' Path => "$ENV{HOME}/News/sounds/assimilated.wav"); 24: # Присоединить подпись 25: $msg->sign(File=>"$ENV{HOME}/.signature"); 26: # Отправить сообщение с использованием метода "smtp" 27: $msg->send(‘smtp’);
Проведем анализ программы.
Строки 1-3. Загрузка модулей. Включен строгий контроль соответствия типов и загружен модуль MIME::Entity. Он вызывает другие необходимые модули, в том числе Mime::Head и Mime::Body.
Строки 4-8. Создание объекта MIME::Entity верхнего уровня. С использованием метода MIME::Entity->build () создается многокомпонентное сообщение MIME верхнего уровня, которое содержит две подчасти. Параметры метода build() включают поля From: и То:, строку Subject: и определяют тип MIME, Туре, как multipart /mixed. Этот вызов возвращает объект MIME::Entity.
Строки 9-18. Присоединение текста сообщения. Создается текст сообщения и записывается в скалярной переменной. Затем с использованием метода attach() объекта MIME верхнего уровня текстовые данные внедряются в наращиваемое многокомпонентное сообщение с указанием параметра Туре, равного -text/plain, параметра Encoding, равного 7bit, и текста сообщения в качестве параметра Data.
Строки 19-23. Присоединение звукового файла. Снова вызывается метод attach(), но на этот раз параметр Туре имеет значение audio/wav, а параметр Encoding равен base64. Весь этот звуковой файл не должен быть считан в оперативную память, поэтому применяется параметр Path, который указывает объекту MIME::Entity на файл, где находятся звуковые данные. Параметр Description включает в исходящее сообщение описание этого присоединенного файла, предназначенное для восприятия человеком.
Строки 24,25. Подписание сообщения. Вызывается метод sign() объекта MIME верхнего уровня для добавления файла подписи пользователя к тексту сообщения.
Строки 26,27. Отправка сообщения. Вызывается метод send( ) для форматирования и отправки по почте законченного сообщения с использованием метода smtp.
При этом вся работа заканчивается. В следующих разделах модули MIME рассматриваются более подробно.