PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

sp_send_dbmail алтернатива в postgres? Лесен начин за изпращане на отчети по имейл на Postgre?

Можете да използвате pgMail за изпращане на поща от PostgreSQL.

Предпоставки:

Преди да можете да използвате pgMail, трябва да инсталирате процедурния език TCL/u. TCL/u е НЕОГРАНИЧЕНА версия на TCL, която вашата база данни може да използва в своите съхранени функции. Преди да се побъркате с инсталирането на неограничения процедурен език TCL във всички ваши бази данни, вземете предвид, че трябва да подготвите адекватни предпазни мерки за сигурност, когато добавяте езика TCL/u към вашата база данни! Няма да нося отговорност за неправилно конфигурирани сървъри, позволяващи на опасни потребители да правят лоши неща!

За да инсталирате процедурния език TCL/u, трябва да сте компилирали (или използвали двоични пакети) и инсталирали TCL разширенията на PostgreSQL. След като се уверите, че това е завършено, просто въведете следното в командния прозорец на unix като администратор на база данни.

# createlang pltclu [YOUR DATABASE NAME]

На мястото на [ИМЕ НА ВАШАТА БАЗА ДАННИ] , поставете името на базата данни, към която ще добавите съхранената процедура. Ако искате тя да бъде добавена към всички НОВИ бази данни, използвайте "template1" като име на вашата база данни.

Преди да добавите нова процедура към DB, първо направете:

Заменете текста <ВЪВЕДЕТЕ ВАШИЯ ПОЩЕН СЪРВЪР ТУК> с пълното име на домейн за вашия имейл сървър. т.е. mail.server.com.

Заменете текста <ВЪВЕДЕТЕ ВАШИЯ СЪРВЪР НА БАЗА ДАННИ ТУК> с напълно квалифицираното име на домейн за вашия сървър на база данни. т.е. 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.');

Или сега, multipart MIME!

select pgmail('Send From ','Send To ', 'Subject goes here','Plaintext message body here.', 'HTML message body here.');

И в двете полета „Изпращане от“ и „Изпращане до“ можете да включите или само имейла, или имейла, ограден в <> с име в обикновен текст.

Тестване на вашата инсталация

Включих пример, който да опитате. ПЪРВО ТРЯБВА да замените низа в скрипта example.execute.sql с вашия истински имейл адрес и да инсталирате езика plpgsql точно както направихте pltclu по-горе. Можете да направите това, като въведете createlang [ИМЕ НА ВАШАТА БАЗА ДАННИ] plpgsql .

След като това приключи, първо стартирайте example.setup.sql. След това изпълнете скрипта example.execute.sql. При условие, че всичко работи добре, ще видите 2 имейла в пощенската си кутия. За да премахнете този пример, изпълнете example.cleanup.sql скрипт.

SMTP удостоверяване

pgMail не поддържа SMTP Auth. Повечето от хората, които го използват, или настройват локален мейл сървър на сървъра на базата данни за локално опашка и след това използват тази настройка за всяко необходимо препредаване (с удостоверяване). Или, алтернативно, обикновено има специално правило, създадено във файла /etc/mail/access (или еквивалентен), за да се позволи препредаване от този IP, използван от сървъра на базата данни. Очевидно последната опция не работи с GMail.

Част от мотивите зад това е, че удостоверяването ще бъде проблематично в транзакционния характер на pgMail за големи задачи. Идеалното решение би било да пуснете EXIM сървър на сървъра на базата данни и той да обработва всеки тип удостоверяване като интелигентен препредавателен сървър. Ето връзка с повече информация относно как да настроите SMTP сървър .

Документация:http://brandolabs.com/pgmail



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL заявка за страниране с множество колони; разберете оператора ИЛИ

  2. Как да избера редове със стойност на колона като нула?

  3. ГРЕШКА:трябва да бъде член на роля при създаване на схема в PostgreSQL

  4. celery задача не може да повтори множество редове от postgresql база данни с python

  5. Sequelize и peer удостоверяване за Postgres?