sql >> Databáze >  >> RDS >> PostgreSQL

alternativa sp_send_dbmail v postgresu? Snadný způsob odesílání e-mailových zpráv Postgres?

Můžete použít pgMail k odesílání pošty z PostgreSQL.

Předpoklady:

Než budete moci používat pgMail, musíte nainstalovat procedurální jazyk TCL/u. TCL/u je NEOMEZENÁ verze TCL, kterou může vaše databáze používat ve svých uložených funkcích. Než se zblázníte do instalace neomezeného procedurálního jazyka TCL do všech vašich databází, vezměte v úvahu, že při přidávání jazyka TCL/u do databáze musíte připravit adekvátní bezpečnostní opatření! Nebudu odpovědný za špatně nakonfigurované servery umožňující nebezpečným uživatelům dělat špatné věci!

Chcete-li nainstalovat procedurální jazyk TCL/u, musíte mít zkompilované (nebo použít binární balíčky) a nainstalovat rozšíření TCL PostgreSQL. Jakmile jste si jisti, že to bylo dokončeno, jednoduše zadejte následující do příkazového řádku unixového shellu jako správce databáze.

# createlang pltclu [YOUR DATABASE NAME]

Namísto [YOUR DATABASE NAME] , zadejte název databáze, do které budete přidávat uloženou proceduru. Pokud chcete, aby byla přidána do všech NOVÝCH databází, použijte jako název databáze "template1".

Před přidáním nové procedury do DB nejprve proveďte:

Nahraďte text <ENTER YOUR MAILSERVER HERE> s plně kvalifikovaným názvem domény vašeho poštovního serveru. tj. mail.server.com.

Nahraďte text <ENTER YOUR DATABASESERVER HERE> s plně kvalifikovaným názvem domény vašeho databázového serveru. tj. db.server.com.

Jakmile provedete výše uvedené, jste připraveni jít.

Po tomto kroku použijte rozhraní psql k přidání funkce pgMail. Stačí zkopírovat obsah souboru pgmail.sql a vložit jej do okna. Můžete jej také načíst přímo z příkazového řádku zadáním:

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

Jakmile nainstalujete uloženou funkci, jednoduše zavolejte proceduru následovně.

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

Nebo nyní, vícedílný MIME!

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

Do polí „Odeslat z“ a „Odeslat do“ můžete uvést buď pouze e-mail, nebo e-mail uzavřený v <> s názvem v prostém textu.

Testování vaší instalace

Přiložil jsem pro vás příklad k vyzkoušení. NEJPRVE MUSÍTE nahradit řetězec ve skriptu example.execute.sql svou skutečnou e-mailovou adresou a nainstalovat jazyk plpgsql stejně jako výše uvedený pltclu. Můžete to udělat zadáním createlang [YOUR DATABASE NAME] plpgsql .

Po dokončení nejprve spusťte soubor example.setup.sql. Poté spusťte skript example.execute.sql. Pokud vše funguje dobře, uvidíte ve vaší schránce 2 e-maily. Chcete-li tento příklad odstranit, spusťte example.cleanup.sql skript.

Ověření SMTP

pgMail nepodporuje SMTP Auth. Většina lidí, kteří jej používají, buď nastaví místní poštovní server na databázovém serveru pro místní řazení do fronty a poté toto nastavení použije pro jakékoli požadované předávání (s auth). Nebo je v souboru /etc/mail/access (nebo ekvivalentu) obvykle vytvořeno speciální pravidlo, které umožňuje přenos z této IP adresy používané databázovým serverem. Je zřejmé, že druhá možnost nefunguje s GMailem.

Část zdůvodnění je, že auth bude problematické v transakční povaze pgMail pro velké úlohy. Ideálním řešením by bylo umístit server EXIM na databázový server a nechat jej zpracovávat jakýkoli typ ověřování jako server inteligentního přenosu. Zde je odkaz, který obsahuje další informace o jak nastavit server SMTP .

Dokumentace:http://brandolabs.com/pgmail



  1. Jak mohu vyhledávat podle emotikonů v MySQL pomocí utf8mb4?

  2. Vyplnění položky stromu skupinou záznamů v Oracle Forms

  3. Klient s IP adresou nemá povolen přístup k serveru Azure SQL databáze

  4. 2 pole pro automatické doplňování/návrhy pomocí jQuery nebo Ajax s druhým polem na základě prvního výběru s více položkami