F.79. utl_mail — управление электронными письмами #

utl_mail — это расширение Postgres Pro, предназначенное для управления электронными письмами, включая управление часто используемыми возможностями электронной почты, такими как вложение, копия и скрытая копия. Функциональность, предоставляемая этим модулем, во многом пересекается с функциональностью пакета UTL_MAIL в Oracle, но может отправлять больший объём данных, поскольку в Postgres Pro для отправки используется тип text, способный хранить до 1 ГБ данных.

F.79.1. Установка #

Расширение utl_mail включено в состав Postgres Pro Enterprise как стандартное расширение. Чтобы задействовать utl_mail, создайте расширение с помощью следующего запроса:

CREATE EXTENSION utl_mail;

F.79.2. Функции utl_mail #

Расширение utl_mail предоставляет функции для управления электронными письмами. Обратите внимание, что некоторые параметры приведённых ниже функций, а именно host, port, timeout, username и password необходимы для установления соединения с SMTP-сервером и аутентификации.

send(host text, порт int, timeout int, username text, password text, sender text, recipients text, message text, cc text default null, bcc text default null, subject text default null, mime_type text default 'text/plain; charset=UTF-8', priority int default 3, replyto text default null, starttls bool default true) #

Упаковывает электронное письмо в соответствующий формат, находит информацию, касающуюся SMTP, и доставляет сообщение на SMTP-сервер для пересылки получателям.

send_attach_bytea(host text, порт int, timeout int, username text, password text, sender text, recipients text, attachment bytea, message text, cc text default null, bcc text default null, subject text default null, mime_type text default 'text/plain; charset=UTF-8', priority int default 3, att_inline bool default true, att_mime_type text default 'application/octet-stream', att_filename text default null, replyto text default null, starttls bool default true) #

Упаковывает электронное письмо в соответствующий формат, находит информацию, касающуюся SMTP, и доставляет сообщение на SMTP-сервер для пересылки получателям с вложением типа bytea.

В параметре attachment указывается вложение типа bytea. Параметр att_inline указывает, можно ли просматривать вложение в теле сообщения, значение по умолчанию — true. Параметр att_mime_type — это mime-тип вложения, по умолчанию — application/octet. Параметр att_filename — это строка с именем файла вложения, по умолчанию — null.

send_attach_text(host text, порт int, timeout int, username text, password text, sender text, recipients text, attachment text, message text, cc text default null, bcc text default null, subject text default null, mime_type text default 'text/plain; charset=UTF-8', priority int default 3, att_inline bool default true, att_mime_type text default 'text/plain; charset=UTF-8', att_filename text default null, replyto text default null, starttls bool default true) #

Упаковывает электронное письмо в соответствующий формат, находит информацию, касающуюся SMTP, и доставляет сообщение на SMTP-сервер для пересылки получателям с вложением типа text.

В параметре attachment указывается вложение типа text. Параметр att_inline указывает, можно ли просматривать вложение в теле сообщения, значение по умолчанию — true. Параметр att_mime_type — это mime-тип вложения, по умолчанию — application/octet. Параметр att_filename — это строка с именем файла вложения, по умолчанию — null.

F.79.3. Пример #

В следующем примере показана отправка электронного письма с вложением с помощью расширения utl_mail.

CREATE TABLE pictures (pic bytea);
INSERT INTO pictures (pic) values (pg_read_binary_file('/home/postgres/slon.jpg'));
DO $$
DECLARE
picture bytea;
BEGIN
SELECT * INTO picture FROM pictures LIMIT 1;
CALL utl_mail.send_attach_bytea
          (
            host => ' smtp.mail.ru ',
            port => 25,
            timeout => 10,
            username => ' username@mail.ru ',
            password => <password>,
            sender => 'Sender < sender@mail.ru >',
            recipients => 'Recipient < recipient@mail.ru >',
            message => 'Letter from pgpro_utl_mail!',
            attachment => picture,
            subject => 'utl_mail letter with picture',
            att_filename => 'slon.jpg',
            priority => 1
          );
END$$;