J'ai besoin d'envoyer un Quelqu'un peut-il me donner un exemple de la façon dont cela fonctionnerait? Je commence à penser que je pourrais avoir à stocker le type de contenu dans le modèle lorsque je sauvegarder le fichier. P>
merci! p> modèles.filefield code> comme pièce jointe par courrier électronique à l'aide de Django. J'ai vu des extraits qui montrent comment faire cela avec les données RAW
DEPESS.FILES CODE> (qui contient toujours le type de contenu), mais n'a pas été en mesure de trouver quoi que ce soit qui montre comment le faire une fois Vous avez déjà enregistré le fichier dans un
modèles.filefield code>. Le type de contenu semble inaccessible à partir du
modèles.filefield code>. P>
4 Réponses :
Je ne fournirais pas simplement un type de contenu et je laisserais le client de messagerie du destinataire l'exerce. À moins que ce ne soit quelque chose d'inhabituel, cela ne devrait pas être un problème.
RFC2616 états: p>
Si et seulement si le type de support n'est pas donné par un champ de type de contenu, le destinataire peut tenter de deviner le type de média par inspection de son Contenu et / ou l'extension de nom (s) de l'URI utilisé pour identifier le ressource. p> blockquote>
mais strong> ... Si vous souhaitez spécifier cela, le type de contenu sur le téléchargement est une très bonne idée. Il convient de noter que les documents propres de Django disent à Vérifiez les données des utilisateurs P>
Si vous êtes sur un * UNIX OS, vous pouvez essayer de deviner / inspecter: P>
import subprocess subprocess.check_output(['file', '-b', '--mime', filename])
Merci! Je vais donner cela un coup de retour!
Connexion d'un fichier Modèles.FileField à un message électronique est agréable et simple à 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()
Une autre approche:
J'ai dû utiliser msg.attach_file (self.my_filefield.path) code> avec django 1.7.1
J'utilise Django-Storages et donc Pour éviter cela, j'ouvre simplement le fichier, lisez-le, devinez le MIMETYPE et le fermez plus tard, mais devez utiliser .Path < / code> lève
.attach code>. de
.atach_file code> magie. p>
Il semble étrange que le module de courrier Django ne fournisse pas une meilleure interface sur le backend de stockage. C'est la réponse la plus sûre à travailler avec plusieurs backends et est celle dont vous avez besoin si vous n'utilisez pas de backend de système de fichiers. La question posée est de savoir comment envoyer un courrier électronique à un fichier django en pièce jointe, mais les réponses qui dépendent du fichier étant sur un stockage de système de fichiers ne répondent vraiment simplement à la question de cette configuration de backend de stockage de système de fichiers.
Pourriez-vous fournir la solution que vous avez trouvée comme une réponse? J'aimerais aussi voir l'extrait.