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$$;