Вы можете использовать pgMail для отправки почты из PostgreSQL.
Требования:
Прежде чем вы сможете использовать pgMail, вы должны установить процедурный язык TCL / u. TCL / u - это НЕОГРАНИЧЕННАЯ версия TCL, которую ваша база данных может использовать в своих хранимых функциях. Перед тем, как начинать установку неограниченного процедурного языка TCL во всех ваших базах данных, учтите, что при добавлении языка TCL / u в свою базу данных вы должны подготовить соответствующие меры предосторожности! Я не буду нести ответственность за неправильно настроенные серверы, позволяющие опасным пользователям делать плохие вещи!
Чтобы установить процедурный язык TCL / u, вы должны скомпилировать (или использовать двоичные пакеты) и установить расширения TCL в PostgreSQL. Убедившись, что это выполнено, просто введите в командной строке unix следующую команду как администратор базы данных.
# createlang pltclu [YOUR DATABASE NAME]
Вместо [YOUR DATABASE NAME]
укажите имя базы данных, в которую вы будете добавлять хранимую процедуру. Если вы хотите, чтобы он был добавлен во все НОВЫЕ базы данных, используйте «template1» в качестве имени базы данных.
Перед добавлением новой процедуры в БД сначала выполните:
Замените текст <ENTER YOUR MAILSERVER HERE>
на полное доменное имя для вашего почтового сервера. т.е. mail.server.com.
Замените текст <ENTER YOUR DATABASESERVER HERE>
на полное доменное имя для вашего сервера базы данных. то есть db.server.com.
Как только вы сделали вышеупомянутое, вы готовы к работе.
После этого шага используйте интерфейс psql, чтобы добавить функцию pgMail. Просто скопируйте содержимое файла pgmail.sql и вставьте его в свое окно. Вы также можете загрузить его прямо из командной строки, набрав:
# psql -e [YOUR DATABASE NAME] < pgMail.sql
После установки сохраненной функции просто вызовите процедуру следующим образом.
select pgmail('Send From ','Send To ','Subject goes here','Plaintext message body here.');
select pgmail('Send From ','Send To ','Subject goes here','','HTML message body here.');
Или сейчас, составная часть MIME!
select pgmail('Send From ','Send To ', 'Subject goes here','Plaintext message body here.', 'HTML message body here.');
В полях «Отправить от» и «Отправить» вы можете указать либо только электронное письмо, либо электронное письмо, заключенное в <> с открытым текстом.
Проверка вашей установки
Я включил пример для вас, чтобы попробовать. Вначале вы ДОЛЖНЫ заменить строку в сценарии example.execute.sql своим реальным адресом электронной почты и установить язык plpgsql так же, как вы делали это выше. Вы можете сделать это, введя createlang [YOUR DATABASE NAME] plpgsql
.
Как только это будет завершено, сначала запустите example.setup.sql. Затем выполните скрипт example.execute.sql. При условии, что все работает хорошо, вы увидите 2 электронных письма в своем почтовом ящике. Чтобы удалить этот пример, выполните скрипт example.cleanup.sql
.
SMTP Auth
pgMail не поддерживает аутентификацию SMTP. Большинство людей, которые его используют, либо настраивают локальный почтовый сервер на сервере базы данных для локальной очереди, а затем используют эту настройку для любой необходимой ретрансляции (с аутентификацией). Или, в качестве альтернативы, в файле / etc / mail / access (или эквивалентном) обычно делается специальное правило, разрешающее ретрансляцию с этого IP-адреса, используемого сервером базы данных. Очевидно, что последний вариант не работает с GMail.
Отчасти это объясняется тем, что auth будет проблематичным в транзакционном характере pgMail для больших заданий. Идеальным решением было бы поместить сервер EXIM на сервер базы данных, чтобы он обрабатывал любой тип аутентификации как сервер с интеллектуальной ретрансляцией. Вот ссылка, которая содержит более подробную информацию о , как настроить SMTP-сервер .
Документация: http://brandolabs.com/pgmail