Despues de horas y horas de surfear por la red de redes encontre una via para que Django los correos que mande tenga un estilo html, atractivo y no en texto planto encontre esa forma de enviar emails desde Django es mas sencillo de lo que creías y puedes enviar emails haciendo uso de templates de la misma manera que realizas el render de templates en tus vistas.
Características
*Enviar emails con contenido HTML y con un backup de contenido plano en TXT.
*Pasar variables al template del email
mail.py
from django.core.mail import EmailMultiAlternatives from django.template import Context from django.template.loader import get_template def email_bienvenido(user): mail_plain = get_template('email/bienvenido.txt') mail_html = get_template('email/bienvenido.html') d = Context({ 'user': user }) subject = 'Bienvenido(a) %s' % user.first_name from_email = 'info@unicatel.com' to = user.email text_content = mail_plain.render(d) html_content = mail_html.render(d) msg = EmailMultiAlternatives(subject, text_content, from_email, [to]) msg.attach_alternative(html_content, "text/html") msg.send()
El código anterior forma parte de nuestra función que se encargará de enviar, en éste caso, nuestro email de bienvenida a los usuario que acaban de registrarse. Con el deseo de mantener nuestro código ordenado es que llamaré a este archivo mail.py.
Consejos
Recuerda que la estructura del HTML de tu email es en tablas a diferencia de la estructura HTML común donde usando CSS puedes ordenar el contenido, es por ello que te recomiendo usar un boilerplate, yo encontré éste Email Boilerplate en GitHub.
Debes configurar el archivo settings.py de tu proyecto de Django para que realice el envío de emails a través de un servidor de SMTP, de los contrario tus correos no serán enviados.
Una duda, como podría poner una imagen en el html?
Por cierto, que buen post, me ayudo bastante. Gracias
no hay qde que con respecto a lo de la imagen puedes hacerlo de 2 formas incrustarla en el correo como base64 o ponerla igual que como la pones en un sitio web
Muchas gracias, me funcionó perfectamente.
También gracias por la pronta respuesta.
no hay de que esa es la idea de tener un blog, responderle la duda a las personas que lo visitan
Una ultima duda, como podría aplicarle estilo? Intente poniendo el css en la etiqueta style de html, pero no funcionó.