sp_send_dbmail альтернатива в postgres? Простой способ отправки отчетов по электронной почте Postgres? - PullRequest
0 голосов
/ 31 августа 2018

SQL Server имеет классную функцию в sp_send_dbmail ( краткое руководство здесь ), которая позволяет отправлять отчеты по электронной почте. Есть ли что-нибудь подобное в Postgres? Мой postgres размещен в Heroku, поэтому я могу поделиться клипом с данными, но мне интересно, есть ли простой способ составить расписание для рассылки электронных писем.

Ответы [ 2 ]

0 голосов
/ 05 декабря 2018

Вы также можете использовать py_pgmail от https://github.com/lcalisto/py_pgmail

  1. Создайте функцию py_pgmail, запустив py_pgmail.sql
  2. После создания функции вы можете просто вызвать функцию из любой точки базы данных как:

    select py_pgmail('sentFromEmail',
                     array['destination emails'],
                     array['cc'],
                     array['bcc'],
                     'Subject',
                     '<USERNAME>','<PASSWORD>',
                     'Text message','HTML message',
                     '<MAIL.MYSERVER.COM:PORT>')
    

array['cc'] и array['bcc'] могут быть пустыми массивами, такими как array['']

0 голосов
/ 06 сентября 2018

Вы можете использовать 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...