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
Ersätt texten
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