Enviar correos electrónicos desde PostgreSQL con Python
miércoles, mayo 07, 2014
Es posible enviar correos electrónicos desde PostgreSQL de diferentes maneras (aquí les muestro otra forma), en este caso voy a explicarlo con el uso de Python, que es la manera que hasta ahora me ha resultado más práctico.
Características del servidor de pruebas:
Pasos de instalación:
Características del servidor de pruebas:
- Debian Squeeze
- PostgreSQL 8.4
Pasos de instalación:
1. Descargar e instalar el paquete plpython. Para instalarlo ejecute:
dpkg - i libpython2.6.deb
2. Descargar e instalar la librería plpython-8.4 de PostgreSQL. Para instalarla ejecute:
dpkg - i postgresql-plpython-8.4.deb
3. Instalar el lenguaje plpythonu en la base de datos de la cual se desea enviar los correos:
CREATE LANGUAGE plpythonu;
4. A partir de este punto ya podemos crear el procedimiento almacenado para envío de correos como sigue en el ejemplo:
CREATE OR REPLACE FUNCTION pypgmail ( IN iservidor character varying, -- Servidor de envío de correo IN ipuerto integer, -- Puerto de envío de correo IN iemisor character varying, -- Correo del emisor IN idestinatario character varying, -- Correo del destinatario IN iclave character varying, -- Clave de autenticación del emisor IN iasunto character varying, -- Asunto del mensaje IN imensaje text -- Mensaje a enviar ) RETURNS integer AS $BODY$ # Importamos smtplib import smtplib # Importamos los módulos necesarios from email.mime.text import MIMEText # Creamos el mensaje msg = MIMEText(imensaje,'html') # Conexión con el server msg['Subject'] = iasunto msg['From'] = iemisor msg['To'] = idestinatario # Autenticamos mailServer = smtplib.SMTP(iservidor,587) mailServer.ehlo() mailServer.starttls() mailServer.ehlo() mailServer.login(iemisor,iclave) # Enviamos mailServer.sendmail(iemisor, idestinatario, msg.as_string()) # Cerramos conexión mailServer.close() return (1) $BODY$ LANGUAGE plpythonu;
7. Listo, para probar el correcto funcionamiento ejecutar el siguiente query:
SELECT * FROM pypgmail('servidor@tudominio.com',587,'correo_emisor@tudominio.com', 'correo_destino@sudominio.com','clave','Asunto del mensaje','Cuerpo del correo.');
Advertencias:
- La instalación de lenguajes sin restricciones en la base de datos aunado a una mala configuración de seguridad del servidor de base de datos puede traer malas consecuencias. Tomar sus previsiones.
Cuando navego por los sitios web, mi parte favorita es leer los comentarios. Es por eso que tus comentarios son un complemento valioso para mis entradas. Cualquier duda o aporte no dejes de escribirlo, en breve lo estaré publicando. ¡Gracias!
4 comentarios
Estimada chica
ResponderBorrarHay una coma de vas cuando creas la función
CREATE OR REPLACE FUNCTION pypgmail
(
IN iservidor character varying, -- Servidor de envío de correo
IN ipuerto integer, -- Puerto de envío de correo
IN iemisor character varying, -- Correo del emisor
IN idestinatario character varying, -- Correo del destinatario
IN iclave character varying, -- Clave de autenticación del emisor
IN iasunto character varying, -- Asunto del mensaje
IN imensaje text, -- Mensaje a enviar
)
Corregido! Muchas gracias!
BorrarMuchas gracias Chica Informática me sirvió mucho.
ResponderBorrarMuchas gracias Chica Informática, me sirvió mucho.
ResponderBorrar