CREATE OR REPLACE FUNCTION py_sendmail()
RETURNS trigger AS
$BODY$
import smtplib
from email.MIMEMultipart import MIMEMultipart
from email.mime.text import MIMEText
from email.MIMEImage import MIMEImage
# parte 1ra.
sql = 'SELECT campo1, campo2 FROM table'
sql += 'WHERE id = '
sql += str(TD['new']['id'])
mensaje = plpy.execute(sql)
for msg in evento:
txt_mensaje += 'texto del mail']+'\n'
txt_mensaje += 'Dato recuperado de la tabla: ' + str(msg['campo1']) +'\n'
# parte 2da.
usuarios = plpy.execute('select nombre, email from users ')
for usuario in usuarios:
msg = MIMEText(txt_mensaje)
msg['Subject'] = 'Prueba'
msg['From'] = 'Juancito Pinto <juancitopinto@gmail.com>'
msg['To'] = str(usuario['email'])
smtpserver = smtplib.SMTP('smtp.gmail.com',587)
smtpserver.ehlo()
smtpserver.starttls()
smtpserver.ehlo()
smtpserver.login('juancitopinto@gmail.com','pwd_de_juancitopinto')
smtpserver.sendmail('juancitopinto@gmail.com',str(usuario['email']),msg.as_string())
smtpserver.close()
$BODY$
LANGUAGE plpython2u VOLATILE
Descripción:
La función descrita esta previsto ser ejecutada por un trigger (cada vez que se adicione un registro por ejemplo).
En la primera parte realiza una consulta a una "tabla" para luego enviar el restultado por mail (Ejm. campo1).
En la segunda parte realiza la consulta a la tabla "users" obteniendo las direcciones de correo para luego enviar el mail correspondiente a todos los usarios existentes en users. Utiliza el servidor SMTP de gmail.
Algo para considerar es que normalmente se recuperan datos de diferentes tipos: enteros, date, time,... etc. de la base de datos, los cuales debén ser previamente convertidos a String para componer una cadena en el mensaje a envíar; una opción si la base de datos es Postgres realizar la conversión con funciones de Postgres Ejm:
SELECT to_char(hora_type, \'HH24:MI:SS\') as hora_string from tabla
mas referencias: http://www.postgresql.org/docs/9.3/static/functions-formatting.html
No hay comentarios.:
Publicar un comentario