Si tenemos un base de datos MySQL y queremos enviar emails usando la librería smptlib de python, nos puede dar más de un quebradero de cabeza si queremos usar la codificación UTF-8. Pongo aquí este breve manual que he hecho con la ayuda de Héctor, un compañero del proyecto en el que estoy trabajando ahora mismo.
Si usamos la librería MySQLdb, tendremos que añadir unos parámetros adicionales para indicarle que nos vamos a conectar a una base de datos con codificación UTF-8.
1 2 |
con = MySQLdb.connect(host, user, passwd, database, charset="utf8", init_command="set names utf8") con.names = "utf8" |
Ahora creamos el mensaje a enviar:
1 2 3 4 5 6 7 8 9 10 |
mensaje_email = u'Código de alarma: %s \n' % codigo mensaje_email+= u'ID de alarma: %s\n'% ID_ALARMA mensaje_email+= u'Descripción de alarma: %s\n' % descripcion #Formar mensaje de email tipo MIME. msg = MIMEText(mensaje_email.encode('utf-8'), _charset="UTF-8") msg['Subject'] = subject msg['From'] = email_from msg['Reply-to'] = email_reply_to msg['To'] = email_to |
Y por último, lo enviamos a través del servidor de correo:
1 2 3 4 5 6 7 8 9 10 |
mailServer = smtplib.SMTP(mail_server) mailServer.ehlo() mailServer.starttls() mailServer.ehlo() mailServer.login(username, passwd) try: mailServer.sendmail(username, to_addr, msg.as_string()) except BaseException, e: print "Error al enviar e-mail: %s" % e mailServer.close() |