Строки 33-44. Выборка модулей и присоединение их к письму. Выполняется цикл по именам файлов, хранящимся в переменной %reprieve. При обработке каждого файла вызывается метод get() объекта FTP для загрузки файла во временный каталог. В случае успешного выполнения используется параметр Filename для присоединения файла к исходящему почтовому сообщению путем вызова метода attach() объекта MIME::Entity верхнего уровня. Другие параметры метода attach() устанавливают кодировку base64 и определяют тип MIME application/x-gzip. В соответствии с общепринятым соглашением, файлы CPAN сжаты программой gzip. Добавляется также краткое описание файлового дополнения; в настоящее время это — просто копия имени файла.
Строка 45. Добавление подписи к исходящему письму. Если в начальном каталоге текущего пользователя имеется файл .signature, то вызывается метод sign() объекта MIME для присоединения его к концу сообщения.
Строки 46-48. Отправка письма. Вызывается метод send() объекта MIME::Entity для кодирования сообщения в формате MIME и отправки его по протоколу SMTP. После выполнения этого действия вызывается метод purge() объекта и из временного каталога удаляются загруженные файлы. Удаление файлов таким образом стало возможным, потому что данные файлы легли в основу компонентов MIME в виде подкласса MIME::Body::File при их присоединении к исходящему сообщению, и поэтому метод purge() рекурсивно удаляет эти файлы. Обратите внимание, что для обеспечения возможности поиска действующего сервера SMTP методом send() должен быть правильно настроен пакет libnet. Если такой поиск не выполнится, проверьте и исправьте файл Libnet.cfg.
Строка 49. Закрытие соединения FTP. Последний этап состоит в закрытии соединения FTP и вызова метода quit() объекта FTP.
Модули Net::SMTP, Mail::Internet и Mail::Mailer позволяют решить первую организацию обмена почтовыми сообщениями — отправку правильно оформленной почты Internet, и значительно упрощают эту операцию. В пакете MIME::Tools классы этих модулей применяются для создания и обработки сложных сообщений, которые содержат вложения MIME. Далее рассмотрим, как решить вторую задачу - организовать прием и обработку входящих сообщений. Кроме того, рассмотрим практические примеры обработки почтовых вложений с использованиём модуля MIME::Parser.