PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

alternatywa sp_send_dbmail w postgresie? Łatwy sposób na wysyłanie raportów e-mail Postgres?

Możesz użyć pgMaila do wysyłania poczty z poziomu PostgreSQL.

Warunki wstępne:

Zanim będziesz mógł korzystać z pgMaila, musisz zainstalować język proceduralny TCL/u. TCL/u to NIEOGRANICZONA wersja TCL, której baza danych może używać w swoich przechowywanych funkcjach. Zanim zaczniesz szaleć instalując nieograniczony język proceduralny TCL we wszystkich swoich bazach danych, weź pod uwagę, że podczas dodawania języka TCL/u do bazy danych musisz przygotować odpowiednie środki bezpieczeństwa! Nie będę odpowiadać za źle skonfigurowane serwery, które pozwalają niebezpiecznym użytkownikom robić złe rzeczy!

Aby zainstalować język proceduralny TCL/u, musisz mieć skompilowane (lub używane pakiety binarne) i zainstalowane rozszerzenia TCL PostgreSQL. Po upewnieniu się, że zostało to zakończone, po prostu wpisz następujące polecenie w wierszu poleceń powłoki uniksowej jako administrator bazy danych.

# createlang pltclu [YOUR DATABASE NAME]

W miejsce [YOUR DATABASE NAME] , wpisz nazwę bazy danych, do której będziesz dodawać procedurę składowaną. Jeśli chcesz, aby został dodany do wszystkich NOWYCH baz danych, użyj "template1" jako nazwy bazy danych.

Przed dodaniem nowej procedury do bazy danych najpierw wykonaj:

Zastąp tekst <ENTER YOUR MAILSERVER HERE> z w pełni kwalifikowaną nazwą domeny dla Twojego serwera pocztowego. czyli poczta.serwer.com.

Zastąp tekst <ENTER YOUR DATABASESERVER HERE> z w pełni kwalifikowaną nazwą domeny dla serwera bazy danych. czyli db.server.com.

Gdy wykonasz powyższe, jesteś gotowy do pracy.

Po tym kroku użyj interfejsu psql, aby dodać funkcję pgMail. Po prostu skopiuj zawartość pliku pgmail.sql i wklej go do swojego okna. Możesz również załadować go bezpośrednio z wiersza poleceń, wpisując:

# psql -e [YOUR DATABASE NAME] < pgMail.sql

Po zainstalowaniu zapisanej funkcji, po prostu wywołaj poniższą procedurę.

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.');

Lub teraz wieloczęściowy MIME!

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

W obu polach „Wyślij z” i „Wyślij do” możesz podać tylko wiadomość e-mail lub wiadomość e-mail zawartą w <> z nazwą w postaci zwykłego tekstu.

Testowanie instalacji

Podałem przykład, który możesz wypróbować. MUSISZ NAJPIERW zastąpić ciąg w skrypcie example.execute.sql swoim prawdziwym adresem e-mail i zainstalować język plpgsql, tak jak to zrobiłeś powyżej. Możesz to zrobić wpisując createlang [YOUR DATABASE NAME] plpgsql .

Po zakończeniu najpierw uruchom example.setup.sql. Następnie wykonaj skrypt example.execute.sql. Pod warunkiem, że wszystko działa dobrze, zobaczysz 2 e-maile w swojej skrzynce pocztowej. Aby usunąć ten przykład, wykonaj example.cleanup.sql skrypt.

Uwierzytelnianie SMTP

pgMail nie obsługuje uwierzytelniania SMTP. Większość osób, które go używają, albo konfiguruje lokalny serwer pocztowy na serwerze bazy danych do lokalnego kolejkowania, a następnie używa tej konfiguracji do dowolnego wymaganego przekazywania (z uwierzytelnianiem). Lub, alternatywnie, zazwyczaj w pliku /etc/mail/access (lub równoważnym) jest utworzona specjalna reguła, aby umożliwić przekazywanie z tego adresu IP używanego przez serwer bazy danych. Oczywiście ta druga opcja nie działa z Gmailem.

Częściowo wynika to z tego, że uwierzytelnianie będzie problematyczne w przypadku transakcyjnego charakteru pgMaila w przypadku dużych zadań. Idealnym rozwiązaniem byłoby umieszczenie serwera EXIM na serwerze bazy danych i umożliwienie obsługi dowolnego typu uwierzytelniania jako serwera przekaźnika inteligentnego. Oto link, który zawiera więcej informacji na temat jak skonfigurować serwer SMTP .

Dokumentacja: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. Ustawianie schematu dla wszystkich zapytań połączenia w psycopg2:Pobieranie warunków wyścigu podczas ustawiania search_path

  2. Błąd podczas mapowania kolumny PostgreSQL LTREE w trybie hibernacji

  3. Jak generować UUID bez myślników

  4. Niestandardowy numer tygodnia PostgreSQL - pierwszy tydzień zawierający 1 lutego

  5. Przechowywanie obrazu w postgresql