sql >> Databasteknik >  >> RDS >> PostgreSQL

sp_send_dbmail alternativ i postgres? Enkelt sätt att skicka Postgres e-postrapporter?

Du kan använda pgMail för att skicka e-post från PostgreSQL.

Förutsättningar:

Innan du kan använda pgMail måste du installera procedurspråket TCL/u. TCL/u är en OBEGRÄNSAD version av TCL som din databas kan använda i sina lagrade funktioner. Innan du blir galen när du installerar det obegränsade TCL-procedurspråket i alla dina databaser, tänk på att du måste förbereda adekvata säkerhetsåtgärder när du lägger till TCL/u-språket i din databas! Jag kommer inte att ansvara för felkonfigurerade servrar som tillåter farliga användare att göra dåliga saker!

För att installera TCL/u-procedurspråket måste du ha kompilerat (eller använt binära paket) och installerat TCL-tilläggen för PostgreSQL. När du är säker på att detta har slutförts, skriv helt enkelt följande vid unix-skalprompten som databasadministratör.

# createlang pltclu [YOUR DATABASE NAME]

I stället för [DITT DATABASNAMN] , ange namnet på databasen som du kommer att lägga till den lagrade proceduren till. Om du vill att den ska läggas till i alla NYA databaser, använd "mall1" som ditt databasnamn.

Innan du lägger till en ny procedur i databasen gör du först:

Ersätt texten med det fullt kvalificerade domännamnet för din e-postserver. dvs. mail.server.com.

Ersätt texten med det fullt kvalificerade domännamnet för din databasserver. db.server.com.

När du har gjort ovanstående är du redo att gå.

Efter detta steg använder du psql-gränssnittet för att lägga till pgMail-funktionen. Kopiera bara innehållet i filen pgmail.sql och klistra in den i ditt fönster. Du kan också ladda den direkt från kommandoraden genom att skriva:

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

När du har installerat den lagrade funktionen, anropa proceduren enligt följande.

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

Eller nu, flerdelad MIME!

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

I både fälten "Skicka från" och "Skicka till" kan du antingen bara inkludera e-postmeddelandet eller e-postmeddelandet omslutet av <> med ett namn i klartext.

Testa din installation

Jag har inkluderat ett exempel som du kan prova. Du MÅSTE FÖRST ersätta strängen i skriptet example.execute.sql med din riktiga e-postadress och installera plpgsql-språket precis som du gjorde pltclu ovan. Du kan göra det genom att ange en createlang [DITT DATABAS NAMN] plpgsql .

När det är klart, kör först exempel.setup.sql. Kör sedan skriptet example.execute.sql. Förutsatt att allt fungerar bra kommer du att se 2 e-postmeddelanden i din brevlåda. För att ta bort det här exemplet, kör example.cleanup.sql manus.

SMTP-autentisering

pgMail stöder inte SMTP Auth. De flesta som använder den ställer antingen in en lokal e-postserver på databasservern för lokal kö och använder sedan den inställningen för eventuell vidarebefordran (med auth). Eller, alternativt, finns det vanligtvis en speciell regel i filen /etc/mail/access (eller motsvarande) för att tillåta vidarebefordran från den IP-adressen som används av databasservern. Uppenbarligen fungerar inte det senare alternativet med Gmail.

En del av resonemanget bakom detta är att autentisering kommer att vara problematiskt i transaktionskaraktären för pgMail för stora jobb. Den idealiska lösningen skulle vara att släppa en EXIM-server på databasservern och låta den hantera alla typer av autentisering som en smart reläserver. Här är en länk som har mer information om hur man ställer in SMTP-servern .

Dokumentation:http://brandolabs.com/pgmail



  1. Rails installerar mysql - Fel vid installation av mysql2:FEL:Det gick inte att bygga gem native extension

  2. Hur ATAN2() fungerar i MariaDB

  3. Hur uppdaterar man en tabell automatiskt när en annan tabell uppdateras på en annan mysql-server?

  4. World Backup Day:4 intressanta dataförlustfakta att veta