Siéntete libre de divulgar nuestra página y códigos con otro, ayúdanos a hacer crecer esta comunidad.
Solución:
Adjuntar un archivo models.FileField a un mensaje de correo electrónico es agradable y simple en Django:
from django.core.mail import EmailMultiAlternatives
kwargs = dict(
to=to,
from_email=from_addr,
subject=subject,
body=text_content,
alternatives=((html_content, 'text/html'),)
)
message = EmailMultiAlternatives(**kwargs)
message.attach_file(model_instance.filefield.path)
message.send()
Otro enfoque:
from django.core.mail.message import EmailMessage
msg = EmailMessage(subject=my_subject, body=my_email_body,
from_email=settings.DEFAULT_FROM_EMAIL, to=[to_addressed])
msg.attach_file(self.my_filefield.path) # self.my_filefield.file for Django < 1.7
msg.send(fail_silently=not(settings.DEBUG))
Estoy usando django-almacenamiento y así .path
plantea
NotImplementedError: This backend doesn't support absolute paths.
Para evitar esto, simplemente abro el archivo, lo leo, adivino el tipo MIME y lo cierro luego, pero teniendo que usar .attach
en lugar de .attach_file
magia.
from mimetypes import guess_type
from os.path import basename
f = model.filefield
f.open()
# msg.attach(filename, content, mimetype)
msg.attach(basename(f.name), f.read(), guess_type(f.name)[0])
f.close()
Aquí tienes las reseñas y calificaciones
Si aceptas, eres capaz de dejar un enunciado acerca de qué te ha gustado de este ensayo.
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)