Manuel Rosa Ramos 25 de agosto de 2015 a las 14.28
   Imprimir artículo
elWebmaster.com

Envío de emails con Django


logoooooUna utilidad muy importante a incluir cuando desarrollamos nuestro sitio web, es el envío automático de emails para notificaciones importantes para los usuarios, donde pueden incluirse simplemente los correos de confirmación de registro de usuarios, la confirmación de una operación de compra (si se trata de un carrito de compras), o el envío de newsletters con información de interés para los usuarios.

En este simple post, podremos ver los sencillo que es realizar esta tarea con Django Framework mediante el SMTP de Gmail, y adem√°s veremos algunos tips para personalizar nuestros correos.

Lo que debemos realizar primero es a√Īadir las variables al entorno de nuestra aplicaci√≥n en el archivo settings.py

EMAIL_HOST = ‘smtp.gmail.com’

EMAIL_HOST_USER = ‘mi-usuario@gmail.com’

EMAIL_HOST_PASSWORD = ‘mi-password’

EMAIL_PORT = 587

EMAIL_USE_TLS = True

Adem√°s de esto, se puede a√Īadir DEFAULT_FROM_EMAIL con la misma direcci√≥n de correo electr√≥nico para que sea utilizada como el remitente por defecto. Al utilizar estas variables en nuestros settings nos ahorramos el tener que indicar estos datos cada vez que codifiquemos el env√≠o de alg√ļn email dentro de la aplicaci√≥n.

Con estas configuraciones realizadas, podemos empezar a enviar los emails. Hay que tener en cuenta que todo el código para el envío de los emails con Django residen en django.core.email.

Primero veremos como enviar un correo sencillo con send_mail, indicando el título, cuerpo del correo, remitente y destinatarios (en forma de lista):

# Send email

from django.core.mail import send_mail

send_mail(“Subject”, “Email body”, settings.EMAIL_HOST_USER, [send_to@domain.com], fail_silently=False)

Con esta opción podemos enviar un correo muy sencillo que sólo contiene texto, salvo que estemos utilizando una versión superior a partir de 1.7 en la que se incluye el parámetro html_message, que permite crear el cuerpo del mensaje con formato HTML.

Una forma general de hacerlo es utilizando la clase EmailMessage, de la siguiente manera:

from django.core.mail import EmailMessage

try:

message = “<html>text</html>”

¬† ¬† ¬† msg = EmailMessage(“subject”, message, settings.EMAIL_HOST_USER, emails)

¬† ¬† ¬† msg.content_subtype = “html”

      msg.send(fail_silently=False)

except:

¬† ¬† ¬†¬†print “Error sending email to %s” % ‘, ‘.join(emails)

En este ejemplo, emails es una lista con uno o más destinatarios para nuestro correo. Sin embargo, la forma más eficiente que podemos utilizar es creando un template donde se almacene el cuerpo del mensaje y al que pasemos los datos de contexto que se utilizarán para el envío, de la forma siguiente:

from django.template import Context

ctx = {‘key’: ‘value’}

message = get_template(email_templatel.html’).render(Context(ctx))

Este código es sólo para asignar el valor a la variable message, el resto quedará igual. También existen otras clases y opciones que puedes revisar para mejorar cada vez más el envío de tus emails


Enviar a Del.icio.us Enviar a Meneame Enviar a Digg Enviar a Fresqui Enviar a Enchilame

Deja tu opinión

© 2007 - 2008 elWebmaster.com | Powered by Wordpress | Diseño CSS y XHTML válido. | Algunos íconos basados en FamFamFam Mini
Acceder