sql >> Database teknologi >  >> RDS >> PostgreSQL

sp_send_dbmail alternativ i postgres? Nem måde at sende Postgres e-mail-rapporter på?

Du kan bruge pgMail at sende post fra PostgreSQL.

Forudsætninger:

Før du kan bruge pgMail, skal du installere proceduresproget TCL/u. TCL/u er en UBEGRÆNSET version af TCL, som din database kan bruge i sine lagrede funktioner. Før du går amok med at installere det ubegrænsede TCL-sprogsprog i alle dine databaser, skal du tage højde for, at du skal forberede passende sikkerhedsforanstaltninger, når du tilføjer TCL/u-sproget til din database! Jeg vil ikke være ansvarlig for fejlkonfigurerede servere, der tillader farlige brugere at gøre dårlige ting!

For at installere TCL/u proceduresproget skal du have kompileret (eller brugt binære pakker) og installeret TCL-udvidelserne af PostgreSQL. Når du er sikker på, at dette er blevet gennemført, skal du blot skrive følgende ved unix-shell-prompten som databaseadministrator.

# createlang pltclu [YOUR DATABASE NAME]

I stedet for [DIT DATABASENAVN] , indtast navnet på den database, som du vil tilføje den lagrede procedure til. Hvis du ønsker, at den skal tilføjes til alle NYE databaser, skal du bruge "skabelon1" som dit databasenavn.

Før du tilføjer en ny procedure til DB, skal du gøre følgende:

Erstat teksten med det fuldt kvalificerede domænenavn til din mailserver. dvs. mail.server.com.

Erstat teksten med det fuldt kvalificerede domænenavn til din databaseserver. dvs. db.server.com.

Når du har gjort ovenstående, er du klar til at gå.

Efter dette trin skal du bruge psql-grænsefladen til at tilføje pgMail-funktionen. Bare kopier indholdet af filen pgmail.sql og indsæt den i dit vindue. Du kan også indlæse den direkte fra kommandolinjen ved at skrive:

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

Når du har installeret den lagrede funktion, skal du blot kalde proceduren som følger.

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, flerdelt MIME!

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

I både felterne "Send fra" og "Send til" kan du enten inkludere e-mailen eller e-mailen indesluttet i <> med et navn i almindelig tekst.

Test af din installation

Jeg har inkluderet et eksempel, som du kan prøve. Du SKAL FØRST erstatte strengen i example.execute.sql-scriptet med din rigtige e-mail-adresse, og installere plpgsql-sproget ligesom du gjorde pltclu ovenfor. Du kan gøre det ved at indtaste en createlang [DIN DATABASENAVN] plpgsql .

Når det er færdigt, skal du først køre eksempel.setup.sql. Udfør derefter example.execute.sql-scriptet. Forudsat at alt fungerer godt, vil du se 2 e-mails i din postkasse. For at fjerne dette eksempel skal du udføre example.cleanup.sql script.

SMTP-godkendelse

pgMail understøtter ikke SMTP Auth. De fleste af de folk, der bruger det, opsætter enten en lokal mailserver på databaseserveren til lokal kø og bruger derefter den opsætning til enhver påkrævet videresendelse (med godkendelse). Eller alternativt er der normalt lavet en særlig regel i filen /etc/mail/access (eller tilsvarende) for at tillade videresendelse fra den IP, der bruges af databaseserveren. Det er klart, at sidstnævnte mulighed ikke virker med Gmail.

En del af begrundelsen bag dette er, at godkendelse vil være problematisk i den transaktionelle karakter af pgMail til store job. Den ideelle løsning ville være at droppe en EXIM-server på databaseserveren og få den til at håndtere enhver form for godkendelse som en smart relæserver. Her er et link, der har flere oplysninger om hvordan man opsætter SMTP-serveren .

Dokumentation:http://brandolabs.com/pgmail



  1. Sådan fungerer UTC_TIMESTAMP() i MariaDB

  2. Hvordan gemmer man twitter oauth detaljer i mysql database?

  3. MariaDB Server Database Encryption Basics

  4. Oracle PL/SQL - Hæv brugerdefineret undtagelse med tilpasset SQLERRM