Как модуль Net::FTP (в отличие от Net::Telnet), Net::SMTP происходит от модулей Net::Cmd и IO::Socket::INET, что позволяет использовать методы message() и code() модуля Net::Cmd для выборки самых последних сообщений и числовых кодов состояния с сервера. В нем унаследованы также все методы IO::Socket низкого уровня.
Для создания нового объекта Net::SMTP применяется конструктор new(). Метод new() устанавливает соединение с сервером SMTP, установленного на сайте , и возвращает новый объект SМТР. Первым необязательный параметр представляет собой имя хоста, к которому должно выполнено подключение, и по умолчанию принимает значение записи почтового обмена, внесенной в конфигурацию модуля Net::Config при установке утилит libnet. Ключевые параметры позволяют определить ряд опций.
Кроме опций, распознаваемых суперклассом IO::Socket::INET, могут применяться следующие параметры: доменное имя, которое должно быть указано; имя локального хоста в команде HELO; продолжительность ожидания ответа от сервера (в секундах); применение режима выдачи подробных отладочных сообщений; номер или символическое имя порта, к которому должно быть выполнено подключение.
Чтобы отправить электронную почту, необходимо вначале вызвать методы mail () и recipient () для подготовки к обмену информацией с сервером. Метод mail() выдает команду mail на сервер. Обязательным первым параметром является адрес отправителя. Необязательный второй параметр представляет собой ссылку на хеш, содержащий различные опции, которые должны быть переданы серверу, поддерживающему протокол ESMTP (Extended Simple Mail Transport Protocol — Расширенный простой почтовый транспортный протокол). Эти опции применяются редко; дополнительные сведения приведены в документации Net::SMTP.