sql >> Base de Datos >  >> RDS >> PostgreSQL

sp_send_dbmail alternativa en postgres? ¿Manera fácil de enviar informes de correo electrónico de Postgres?

Puedes usar pgMail para enviar correo desde PostgreSQL.

Requisitos previos:

Antes de poder usar pgMail, debe instalar el lenguaje de procedimiento TCL/u. TCL/u es una versión SIN RESTRICCIONES de TCL que su base de datos puede usar en sus funciones almacenadas. Antes de volverse loco al instalar el lenguaje de procedimiento TCL sin restricciones en todas sus bases de datos, tenga en cuenta que debe tomar las precauciones de seguridad adecuadas al agregar el lenguaje TCL/u a su base de datos. ¡No seré responsable de servidores mal configurados que permitan a usuarios peligrosos hacer cosas malas!

Para instalar el lenguaje de procedimiento TCL/u, debe haber compilado (o usado paquetes binarios) e instalado las extensiones TCL de PostgreSQL. Una vez que esté seguro de que esto se ha completado, simplemente escriba lo siguiente en el indicador de shell de Unix como administrador de la base de datos.

# createlang pltclu [YOUR DATABASE NAME]

En lugar de [YOUR DATABASE NAME] , coloque el nombre de la base de datos a la que agregará el procedimiento almacenado. Si desea que se agregue a todas las NUEVAS bases de datos, use "template1" como nombre de su base de datos.

Antes de agregar un nuevo procedimiento a la base de datos, primero haga:

Reemplace el texto <ENTER YOUR MAILSERVER HERE> con el nombre de dominio completo para su servidor de correo. es decir, mail.server.com.

Reemplace el texto <ENTER YOUR DATABASESERVER HERE> con el nombre de dominio completo para su servidor de base de datos. es decir, db.server.com.

Una vez que haya hecho lo anterior, estará listo para comenzar.

Después de este paso, use la interfaz psql para agregar la función pgMail. Simplemente copie el contenido del archivo pgmail.sql y péguelo en su ventana. También puede cargarlo directamente desde la línea de comando escribiendo:

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

Una vez que haya instalado la función almacenada, simplemente llame al procedimiento de la siguiente manera.

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

¡O ahora, MIME multiparte!

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

En los campos "Enviar desde" y "Enviar a", puede incluir solo el correo electrónico o el correo electrónico encerrado en <> con un nombre de texto sin formato.

Prueba de tu instalación

He incluido un ejemplo para que lo pruebes. PRIMERO DEBE reemplazar la cadena en el script example.execute.sql con su dirección de correo electrónico real e instalar el lenguaje plpgsql tal como lo hizo con el pltclu anterior. Puede hacerlo ingresando un createlang [YOUR DATABASE NAME] plpgsql .

Una vez que esté completo, primero ejecute el ejemplo.setup.sql. Luego ejecute el script example.execute.sql. Siempre que todo funcione bien, verá 2 correos electrónicos en su buzón. Para eliminar este ejemplo, ejecute example.cleanup.sql guión.

Autenticación SMTP

pgMail no es compatible con la autenticación SMTP. La mayoría de las personas que lo usan configuran un servidor de correo local en el servidor de la base de datos para la cola local y luego usan esa configuración para cualquier retransmisión requerida (con autenticación). O, como alternativa, suele haber una regla especial en el archivo /etc/mail/access (o equivalente) para permitir la retransmisión desde esa IP utilizada por el servidor de la base de datos. Obviamente, la última opción no funciona con GMail.

Parte del razonamiento detrás de esto es que la autenticación será problemática en la naturaleza transaccional de pgMail para trabajos grandes. La solución ideal sería colocar un servidor EXIM en el servidor de la base de datos y hacer que maneje cualquier tipo de autenticación como un servidor de relé inteligente. Aquí hay un enlace que tiene más información sobre cómo configurar el servidor SMTP .

Documentación:http://brandolabs.com/pgmail